Base: Add millitesla unit

This commit is contained in:
marioalexis
2025-11-28 18:18:21 -03:00
parent bfb0efd5f9
commit 0f148f6e63
8 changed files with 722 additions and 706 deletions

View File

@@ -289,6 +289,7 @@ EXPO [eE][-+]?[0-9]+
"C" COUNTCHARS; yylval.quantity.scaler = Quantity::Coulomb; yylval.quantity.unitStr = yytext; return UNIT; // Coulomb (A*s)
"T" COUNTCHARS; yylval.quantity.scaler = Quantity::Tesla; yylval.quantity.unitStr = yytext; return UNIT; // Tesla (kg/s^2/A)
"mT" COUNTCHARS; yylval.quantity.scaler = Quantity::MilliTesla; yylval.quantity.unitStr = yytext; return UNIT; // milli Tesla
"G" COUNTCHARS; yylval.quantity.scaler = Quantity::Gauss; yylval.quantity.unitStr = yytext; return UNIT; // Gauss (1 G = 1e-4 T)
"Wb" COUNTCHARS; yylval.quantity.scaler = Quantity::Weber; yylval.quantity.unitStr = yytext; return UNIT; // Weber (kg*m^2/s^2/A)

File diff suppressed because it is too large Load Diff

View File

@@ -438,6 +438,7 @@ const Quantity Quantity::MegaOhm ( 1e+12 , Unit::
const Quantity Quantity::Coulomb ( 1.0 , Unit::ElectricCharge ); // Coulomb (A*s)
const Quantity Quantity::Tesla ( 1.0 , Unit::MagneticFluxDensity ); // Tesla (kg/s^2/A)
const Quantity Quantity::MilliTesla ( 1e-3 , Unit::MagneticFluxDensity );
const Quantity Quantity::Gauss ( 1e-4 , Unit::MagneticFluxDensity ); // 1 G = 1e-4 T
const Quantity Quantity::Weber ( 1e6 , Unit::MagneticFlux ); // Weber (kg*m^2/s^2/A)

View File

@@ -304,6 +304,7 @@ public:
static const Quantity Coulomb;
static const Quantity Tesla;
static const Quantity MilliTesla;
static const Quantity Gauss;
static const Quantity Weber;

View File

@@ -173,6 +173,7 @@ CGRP '\,'[0-9][0-9][0-9]
"C" yylval = Quantity::Coulomb; return UNIT; // Coulomb (A*s)
"T" yylval = Quantity::Tesla; return UNIT; // Tesla (kg/s^2/A)
"mT" yylval = Quantity::MilliTesla; return UNIT; // milli Tesla
"G" yylval = Quantity::Gauss; return UNIT; // Gauss (1 G = 1e-4 T)
"Wb" yylval = Quantity::Weber; return UNIT; // Weber (kg*m^2/s^2/A)

File diff suppressed because it is too large Load Diff

View File

@@ -70,7 +70,7 @@
/* First part of user prologue. */
#line 24 "Quantity.y"
#line 26 "Quantity.y"
#define YYSTYPE Quantity
#define yyparse Quantity_yyparse
@@ -583,10 +583,10 @@ static const yytype_int8 yytranslate[] =
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_int8 yyrline[] =
{
0, 43, 43, 44, 45, 46, 47, 48, 50, 51,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
74, 75, 76, 77, 78, 79, 81, 82
0, 45, 45, 46, 47, 48, 49, 50, 52, 53,
54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
76, 77, 78, 79, 80, 81, 83, 84
};
#endif
@@ -1225,217 +1225,217 @@ yyreduce:
switch (yyn)
{
case 2: /* input: %empty */
#line 43 "Quantity.y"
#line 45 "Quantity.y"
{ QuantResult = Quantity(std::numeric_limits<double>::min()); /* empty input */ }
#line 1228 "Quantity.tab.c"
break;
case 3: /* input: num */
#line 44 "Quantity.y"
#line 46 "Quantity.y"
{ QuantResult = yyvsp[0]; }
#line 1234 "Quantity.tab.c"
break;
case 4: /* input: unit */
#line 45 "Quantity.y"
#line 47 "Quantity.y"
{ QuantResult = yyvsp[0]; }
#line 1240 "Quantity.tab.c"
break;
case 5: /* input: quantity */
#line 46 "Quantity.y"
#line 48 "Quantity.y"
{ QuantResult = yyvsp[0]; }
#line 1246 "Quantity.tab.c"
break;
case 6: /* input: quantity quantity */
#line 47 "Quantity.y"
#line 49 "Quantity.y"
{ QuantResult = yyvsp[-1] + yyvsp[0]; }
#line 1252 "Quantity.tab.c"
break;
case 7: /* input: quantity quantity quantity */
#line 48 "Quantity.y"
#line 50 "Quantity.y"
{ QuantResult = yyvsp[-2] + yyvsp[-1] + yyvsp[0]; }
#line 1258 "Quantity.tab.c"
break;
case 8: /* num: NUM */
#line 50 "Quantity.y"
#line 52 "Quantity.y"
{ yyval = yyvsp[0]; }
#line 1264 "Quantity.tab.c"
break;
case 9: /* num: ONE */
#line 51 "Quantity.y"
#line 53 "Quantity.y"
{ yyval = yyvsp[0]; }
#line 1270 "Quantity.tab.c"
break;
case 10: /* num: num '+' num */
#line 52 "Quantity.y"
#line 54 "Quantity.y"
{ yyval = Quantity(yyvsp[-2].getValue() + yyvsp[0].getValue()); }
#line 1276 "Quantity.tab.c"
break;
case 11: /* num: num MINUSSIGN num */
#line 53 "Quantity.y"
#line 55 "Quantity.y"
{ yyval = Quantity(yyvsp[-2].getValue() - yyvsp[0].getValue()); }
#line 1282 "Quantity.tab.c"
break;
case 12: /* num: num '*' num */
#line 54 "Quantity.y"
#line 56 "Quantity.y"
{ yyval = Quantity(yyvsp[-2].getValue() * yyvsp[0].getValue()); }
#line 1288 "Quantity.tab.c"
break;
case 13: /* num: num '/' num */
#line 55 "Quantity.y"
#line 57 "Quantity.y"
{ yyval = Quantity(yyvsp[-2].getValue() / yyvsp[0].getValue()); }
#line 1294 "Quantity.tab.c"
break;
case 14: /* num: MINUSSIGN num */
#line 56 "Quantity.y"
#line 58 "Quantity.y"
{ yyval = Quantity(-yyvsp[0].getValue()); }
#line 1300 "Quantity.tab.c"
break;
case 15: /* num: num '^' num */
#line 57 "Quantity.y"
#line 59 "Quantity.y"
{ yyval = Quantity(pow(yyvsp[-2].getValue(), yyvsp[0].getValue())); }
#line 1306 "Quantity.tab.c"
break;
case 16: /* num: '(' num ')' */
#line 58 "Quantity.y"
#line 60 "Quantity.y"
{ yyval = yyvsp[-1]; }
#line 1312 "Quantity.tab.c"
break;
case 17: /* num: ACOS '(' num ')' */
#line 59 "Quantity.y"
#line 61 "Quantity.y"
{ yyval = Quantity(acos(yyvsp[-1].getValue())); }
#line 1318 "Quantity.tab.c"
break;
case 18: /* num: ASIN '(' num ')' */
#line 60 "Quantity.y"
#line 62 "Quantity.y"
{ yyval = Quantity(asin(yyvsp[-1].getValue())); }
#line 1324 "Quantity.tab.c"
break;
case 19: /* num: ATAN '(' num ')' */
#line 61 "Quantity.y"
#line 63 "Quantity.y"
{ yyval = Quantity(atan(yyvsp[-1].getValue())); }
#line 1330 "Quantity.tab.c"
break;
case 20: /* num: ABS '(' num ')' */
#line 62 "Quantity.y"
#line 64 "Quantity.y"
{ yyval = Quantity(fabs(yyvsp[-1].getValue())); }
#line 1336 "Quantity.tab.c"
break;
case 21: /* num: EXP '(' num ')' */
#line 63 "Quantity.y"
#line 65 "Quantity.y"
{ yyval = Quantity(exp(yyvsp[-1].getValue())); }
#line 1342 "Quantity.tab.c"
break;
case 22: /* num: LOG '(' num ')' */
#line 64 "Quantity.y"
#line 66 "Quantity.y"
{ yyval = Quantity(log(yyvsp[-1].getValue())); }
#line 1348 "Quantity.tab.c"
break;
case 23: /* num: LOG10 '(' num ')' */
#line 65 "Quantity.y"
#line 67 "Quantity.y"
{ yyval = Quantity(log10(yyvsp[-1].getValue())); }
#line 1354 "Quantity.tab.c"
break;
case 24: /* num: SIN '(' num ')' */
#line 66 "Quantity.y"
#line 68 "Quantity.y"
{ yyval = Quantity(sin(yyvsp[-1].getValue())); }
#line 1360 "Quantity.tab.c"
break;
case 25: /* num: SINH '(' num ')' */
#line 67 "Quantity.y"
#line 69 "Quantity.y"
{ yyval = Quantity(sinh(yyvsp[-1].getValue())); }
#line 1366 "Quantity.tab.c"
break;
case 26: /* num: TAN '(' num ')' */
#line 68 "Quantity.y"
#line 70 "Quantity.y"
{ yyval = Quantity(tan(yyvsp[-1].getValue())); }
#line 1372 "Quantity.tab.c"
break;
case 27: /* num: TANH '(' num ')' */
#line 69 "Quantity.y"
#line 71 "Quantity.y"
{ yyval = Quantity(tanh(yyvsp[-1].getValue())); }
#line 1378 "Quantity.tab.c"
break;
case 28: /* num: SQRT '(' num ')' */
#line 70 "Quantity.y"
#line 72 "Quantity.y"
{ yyval = Quantity(sqrt(yyvsp[-1].getValue())); }
#line 1384 "Quantity.tab.c"
break;
case 29: /* num: COS '(' num ')' */
#line 71 "Quantity.y"
#line 73 "Quantity.y"
{ yyval = Quantity(cos(yyvsp[-1].getValue())); }
#line 1390 "Quantity.tab.c"
break;
case 30: /* unit: UNIT */
#line 74 "Quantity.y"
#line 76 "Quantity.y"
{ yyval = yyvsp[0]; }
#line 1396 "Quantity.tab.c"
break;
case 31: /* unit: ONE '/' unit */
#line 75 "Quantity.y"
#line 77 "Quantity.y"
{ yyval = Quantity(1.0)/yyvsp[0]; }
#line 1402 "Quantity.tab.c"
break;
case 32: /* unit: unit '*' unit */
#line 76 "Quantity.y"
#line 78 "Quantity.y"
{ yyval = yyvsp[-2] * yyvsp[0]; }
#line 1408 "Quantity.tab.c"
break;
case 33: /* unit: unit '/' unit */
#line 77 "Quantity.y"
#line 79 "Quantity.y"
{ yyval = yyvsp[-2] / yyvsp[0]; }
#line 1414 "Quantity.tab.c"
break;
case 34: /* unit: unit '^' num */
#line 78 "Quantity.y"
#line 80 "Quantity.y"
{ yyval = yyvsp[-2].pow (yyvsp[0]); }
#line 1420 "Quantity.tab.c"
break;
case 35: /* unit: '(' unit ')' */
#line 79 "Quantity.y"
#line 81 "Quantity.y"
{ yyval = yyvsp[-1]; }
#line 1426 "Quantity.tab.c"
break;
case 36: /* quantity: num unit */
#line 81 "Quantity.y"
#line 83 "Quantity.y"
{ yyval = yyvsp[-1]*yyvsp[0]; }
#line 1432 "Quantity.tab.c"
break;
case 37: /* quantity: num '/' unit */
#line 82 "Quantity.y"
#line 84 "Quantity.y"
{ yyval = Quantity(yyvsp[-2])/yyvsp[0]; }
#line 1438 "Quantity.tab.c"
break;
@@ -1634,4 +1634,4 @@ yyreturnlab:
return yyresult;
}
#line 85 "Quantity.y"
#line 87 "Quantity.y"

View File

@@ -224,7 +224,7 @@ inline const UnitsSchemaSpec s3
{ 0 , "A/mm^2" , 1 }}
},
{ "MagneticFluxDensity", {
{ 1e-3 , "G" , 1e-4 },
{ 1.0 , "mT" , 1e-3 },
{ 0 , "T" , 1.0 }}
},
{ "MagneticFieldStrength", {
@@ -436,7 +436,7 @@ inline const UnitsSchemaSpec s4
{ 0 , "A/mm^2" , 1.0 }}
},
{ "MagneticFluxDensity", {
{ 1e-3 , "G" , 1e-4 },
{ 1.0 , "mT" , 1e-3 },
{ 0 , "T" , 1.0 }}
},
{ "MagneticFieldStrength", {