4 ms·
How does Numbat infer the type/unit for operations that involve transcendental functions like the trigonometric functions and the natural logarithm? How about f
by jskherman 3y ago
How does Numbat infer the type/unit for operations that involve transcendental functions like the trigonometric functions and the natural logarithm? How about for exponents that are not integers (rational or irrational)?
I've seen from to time some empirical equations that result to this. Usually, it's just hand-waved away and the non-integer units are ignored or dropped when the transcendental function is evaluated. I guess the trivial answer is probably add an extra factor with a value of 1 with the reciprocal units to result to the said type 1 for dimensionless units?
- iNic 3y agoThose types of functions are only allowed to take in dimensionless (ie scalar) values. Numbat seems to handle this correctly, see [1]. [1]: https://numbat.dev https://numbat.dev
- jskherman 3y agoI guess that's logical, still a bit tedious in converting values to scalars...
- geysersam 3y agoIf the value passed to the function isn't dimensionless there's very likely a unit error somewhere. I can't come up with an example where that would be a reasonable thing to do, but haven't thought too much about it.
- xigoi 3y agoIf you find yourself wanting to do that, you're probably making the exact kind of error that the language is meant to prevent.
- marginalia_nu 3y agoTo be fair, thse functions aren't defined for physical quantities. As a physicist, if you ever see units on the parameter to a trigonmetric function, you can be fairly certain something is wrong. You can derive this from how e.g. cos(x) can be written as a polynomial series, something like 1 - x^2 + whatever; and since 1 and x^2 would have different units if x is anything but unitless, you've goofed. That's a big reason why units are used in calculations in the first place. They basically act as a sort of checksum for your calculations.
- sharkdp 3y ago> As a physicist, if you ever see units on the parameter to a trigonmetric function, you can be fairly certain something is wrong. Exactly. Which is why trigonometric functions in Numbat have the signature cos(x: Scalar) -> Scalar and only take quantities as arguments that are implicitly convertible to a scalar, like 'cos(pi / 3)', 'cos(30 deg)' or 'cos(0.5 turn)'. Whether or not angles should be considered dimensionless is actually a matter of academic dispute. If you want to know more, take a look at https://github.com/sharkdp/numbat/pull/167 https://github.com/sharkdp/numbat/pull/167 and the references therein.
- pklausler 3y agoRadians vs degrees?
- mikewarot 3y agoRadians, gradians, degrees, minutes, seconds, thirds, revolutions are all ways of dividing up a circle
- marginalia_nu 3y agoFor radians, we can note that the length of a circle segment is rα, where r is the radius and α is the angle, where both the radius and circle segment have dimensions length; then we must infer that α is dimensionless. Degrees follow a similar argument.
- sharkdp 3y agoYou don't have to convert to scalars. Numbers have a type of 1 (= Scalar). You can just call exp(3), for example: https://numbat.dev/?q=exp%283%29%E2%8F%8E https://numbat.dev/?q=exp%283%29%E2%8F%8E Or you could pass an angle quantity, which is convertible to a Scalar. Like cos(30 deg): https://numbat.dev/?q=exp%283%29%E2%8F%8Ecos%2830+deg%29%E2%8F%8E https://numbat.dev/?q=exp%283%29%E2%8F%8Ecos%2830+deg%29%E2%...