[HN Gopher] GNU Units
___________________________________________________________________
GNU Units
Author : makeworld
Score : 82 points
Date : 2023-08-03 15:39 UTC (7 hours ago)
(HTM) web link (www.gnu.org)
(TXT) w3m dump (www.gnu.org)
| jwr wrote:
| One of the best features of my HP-50G calculator is the units
| library.
| kragen wrote:
| how does it handle the examples i posted in
| https://news.ycombinator.com/item?id=36988917
| tangus wrote:
| Great utility. Almost the only thing I use Termux for nowadays.
| cb321 wrote:
| Units of measure are, of course, the aboriginal type system for
| pre-software hand calculation.. carrying units along to make sure
| you do not add apples to oranges { unless you know how to
| _convert_ "apples" to "oranges" for some adapted metaphorical
| fruits.. e.g. orange section/segment/slices :-) }.
|
| Nim [1] has sufficient compile-time strength that units can be
| integrated with the static type system:
| https://github.com/SciNim/Unchained
|
| [1] https://nim-lang.org/
| giraffe_lady wrote:
| F# also has units integrated into the type system. Seems like a
| great feature though I've never used a language with it.
| simne wrote:
| GNU should make it's own system of measurement, best of all :)
| darkstarsys wrote:
| Is there a spreadsheet that supports units in its cells and GNU
| Units in formulas? Seems like that would be an amazing open
| source tool.
| kragen wrote:
| to my surprise, it turns out that org-mode's spreadsheet does
| support units, because it uses emacs calc-eval. But calc seems
| to have its own dimensional analysis engine rather than using
| gnu units. i was hoping to get a temperature in this last
| column, for example: | 3 mm | 4 kg |
| 0.44444444 kg / mm^2 | 44.444444 kg m^2 / (s^2 mm^2) |
| (44.444444 kg m^2 / (s^2 mm^2 stefanboltzmann))^0.25 |
| | 2 mm | 1 kg | kg / (4 mm^2) | 25 kg m^2 / (s^2 mm^2)
| | (25 kg m^2 / (s^2 mm^2 stefanboltzmann))^0.25 |
| #+TBLFM: $3=$2/$1/$1::$4=$3*(10m/s)**2::$5=($4/
| stefanboltzmann)**(1/4)
|
| (edited, previous incorrect version follows)
| | 3 mm | 4 kg | 0.44444444 kg / mm^2 | 300 mm m^2 / s^2 | (300
| mm m^2 / (s^2 stefanboltzmann))^0.25 | | 2 mm | 1 kg |
| kg / (4 mm^2) | 200 mm m^2 / s^2 | (200 mm m^2 / (s^2
| stefanboltzmann))^0.25 | #+TBLFM:
| $3=$2/$1/$1::$4=$1*(10m/s)**2::$5=($4/ stefanboltzmann)**(1/4)
|
| similarly here i was hoping to get the time until the laptop
| charges and i guess i sort of did but not really
| | 22.8 Wh | 16.8 Wh | 6. Wh | 7.4W | 0.81081081 Wh / W |
| #+TBLFM: $3=$1-$2::$5=$3/$4
| chungy wrote:
| This is a great program and I use it almost every day. A+
|
| For my local units file, I've also defined a "floppyMB" for retro
| computing purposes. The old "1.2 MB", "1.44 MB", "2.88 MB"
| measures were based on the idea that "1 MB = 1000 KiB"
| (seriously). The "1.44 MB" floppies would be measured as either
| 1.47 MB or 1.41 MiB in more conventional units.
| echo "floppyMB 1000 KiB" >> ~/.units units "1.44
| floppyMB" MiB
| tomas789 wrote:
| Only tangential to this but somebody might find it usefull. I'm
| doing lots of calculations in Python involving various units. I'm
| using a similar library called Pint.
| https://github.com/hgrecco/pint
|
| My business is thermodynamics of power plants. Professionals in
| the industry tend to use convenient units like C, bars, kJ/kg and
| so on. But the formulas usualy need basic SI units. Using this
| library not only streamlines the conversion process but also
| keeps track of the unit itself. So instead of variable
| turbine_output_gj and turbine_output_mw I can have just
| turbine_output which is convenient.
|
| It is hard to put a value on that but I believe it has already
| spared me many trivial mistakes that I had to explain to my
| clients.
| jeramey wrote:
| I'll second that. I work in the renewable energy space where we
| get all manner of atmospheric and power data in a wide variety
| of units depending on the data source, so Pint is incredibly
| useful in normalizing them as well as making it clear in the
| code what and how unit conversion is happening. The fact that
| it integrates fairly nicely with Pandas and Numpy is great,
| too.
| dang wrote:
| Related:
|
| _GNU Units_ - https://news.ycombinator.com/item?id=25657311 -
| Jan 2021 (203 comments)
| makeworld wrote:
| My current alias for units is "units -1v -d max". This makes this
| improves output and uses max precision.
| ChrisArchitect wrote:
| (2016)
| ChrisArchitect wrote:
| (2016)
|
| Posted a few times recently
|
| Here's some more discussion 3 years ago:
| https://news.ycombinator.com/item?id=25657311
| seabass-labrax wrote:
| It's not (2016) in my opinion - this page was last updated
| then, but the most recent release of the software was in 2022.
| krupan wrote:
| I've been learning emacs calc (my HP-48g calculator finally died)
| and it seems to have this built-in. It's super impressive.
| kragen wrote:
| i was excited by your comment but disappointingly emacs calc
| seems to have its own, less powerful unit conversion system
| https://news.ycombinator.com/item?id=36991392
| Qem wrote:
| This tool is underrated. Failing to deal with units conversion
| already crashed a Mars probe:
| https://www.latimes.com/archives/la-xpm-1999-oct-01-mn-17288...
|
| I wonder if the recent problem with the voyager was due to
| something like this, for example, 2 arcminutes or 2*pi radians
| being mistaken for 2 degrees.
| krger wrote:
| >This tool is underrated. Failing to deal with units conversion
| already crashed a Mars probe
|
| The mistake there was that they were unaware that they had to
| make the unit conversion, not that they did it wrong.
|
| No tool can, by itself, overcome your ignorance of its
| necessity.
| nequo wrote:
| > No tool can, by itself, overcome your ignorance of its
| necessity.
|
| A type system that understands units of measurement can help:
|
| https://learn.microsoft.com/en-us/dotnet/fsharp/language-
| ref...
| Qem wrote:
| > The mistake there was that they were unaware that they had
| to make the unit conversion, not that they did it wrong.
|
| I think the root cause here was continued use of medieval
| units, instead of just standardizing on the metric system as
| it's already done around nearly the entire world.
| [deleted]
| extraduder_ire wrote:
| Have you ever accidentally set your calculator to gradians?
| We were warned about it when doing trigonometry in school,
| the first time we had to go between degrees and radians.
| fest wrote:
| Even if it was all metric, in embedded systems you often
| have to deal with the same measurements in different units,
| like angles in radians, degrees, centidegrees, length in
| mm, m, cm, due to various reasons (mostly historical, like
| integer math being faster than floating point math).
|
| It is getting less frequent in modern code bases that
| target 32-bit MCUs with hardware-floating point support,
| but converting large codebases
| gumby wrote:
| > Even if it was all metric, in embedded systems you
| often have to deal with the same measurements in
| different units, like angles in radians, degrees,
| centidegrees, length in mm, m, cm, due to various reasons
| (mostly historical, like integer math being faster than
| floating point math).
|
| It's also cultural - different fields use different SI
| units for historical or practical reasons.
|
| My second year at MIT I was in a program (16.001 & 2)
| that had different classes using cgs, mks, and mills.
| They all met in the same classroom (different times of
| course!), so there was no spacial reminder. But we all
| survived.
| theamk wrote:
| The idea of using units is underrated, yes. More programming
| languages should be offer support for units, and more program
| should be using them.
|
| That particular tool, "GNU Units"? Nope. It is pretty good
| command-line calculator (especially if you give inputs on
| command line so that history is preserved), but it is not
| really scriptable, and you'd _definitely_ want to avoid all
| manual calculations in any sort of important process.
| kragen wrote:
| it's somewhat scriptable, and it keeps its own history; i
| usually use it interactively to get better tab-completion.
| that also makes search with ^r provide more relevant search
| hits
|
| as an example of scriptability, i just added this function to
| ~/.units # note that theta is the angle
| from the central axis of the cone to its side
| conesolidangle(theta) units=[radian;sr] range=[0,) 2 pi (1 -
| cos(theta)) sr ; \ acos(1 -
| conesolidangle/sr/2/pi)
|
| (sadly it is not smart enough to figure out the inverse
| formula itself, even in a simple acyclic case like this)
|
| with this i can calculate, for example, the convergence angle
| required for concentrated sunlight to melt iron
| (asymptotically, assuming no heat losses to conduction or
| convection) You have: 2
| ~conesolidangle(conesolidangle(asin(sunradius/sundist))
| tempC(1538)**4 stefanboltzmann / (1000W/m2)) You
| want: dms 13 deg + 10 arcmin + 34.428619
| arcsec
|
| it would be highly desirable to have conditionals and loops,
| of course, or even numpy-style vectors with broadcasting, as
| well as either functions of more than one argument or higher-
| order functions, and it doesn't have any of those
| parekhnish wrote:
| Worth looking at: https://github.com/aurora-opensource/au
| It's a C++ library for handling physical quantities (and
| subsequent unit conversions)
| Rayhem wrote:
| I had a lot of fun working with the maintainers of this utility
| to better support Gaussian units[1]. This is usually done
| (incorrectly) by multiplying, say, some number of SI coulombs by
| a dimensionless constant (actually 2_997_924_580) to produce some
| number of statcoulombs that represents the same charge. It's very
| subtle, though, that statcoulombs and coulombs have different
| _dimensions_ (which is the point of Gaussian units) despite
| representing the same _physical quantity_ [2], so the conversion
| is much more involved. I learned a lot about the nature of units
| and software development working with them.
|
| [1]: https://en.wikipedia.org/wiki/Gaussian_units
|
| [2]: A consequence of this is that electromagnetic equations
| formulated in terms of Gaussian units have goofy things like
| sqrt(grams) as "base" units. That was the tricky part to handle.
| cb321 wrote:
| Yes - you haven't seen the full scope until you confront unit
| system conversions as alluded to in my other comment
| (https://news.ycombinator.com/item?id=36988497).
|
| There should also be conversions to/from SI|CGS and "natural
| units" (particle physics) and "gravitational units" (general
| relativity - G=c=1).
|
| The "input/output" can be a bit more subtle, too - since you
| may need to tell the converter the abstract physical kind/"meta
| type" of the thing like "energy" or "momentum" or "charge" to
| fully define what might happen (and in some ideal world get
| back an expression with powers of G's and c's in there
| _symbolically_ rather than only numerically). Some of this
| shows up in an unresolved issue on that Nim library I
| mentioned[1]: https://github.com/SciNim/Unchained/issues/8
|
| EDIT: { One reason to preserve a symbolic capability is that
| some constants have resisted precise measurement for centuries
| - G is still only known to about 5 decimals [2] - and you don't
| want round-trip unit conversion to add such errors to the
| calculation. }
|
| [1] https://news.ycombinator.com/item?id=36988225
|
| [2]
| https://en.wikipedia.org/wiki/Gravitational_constant#Modern_...
| rnhmjoj wrote:
| One of my favorite feature is guessing the physical quantity from
| the dimensions. For example: You have: A / m
| You want: ? H_FIELD B_FIELD / (mu0/mu0_SI)
| MAGNETIZATION MAGNETIC_DIPOLE_MOMENT / VOLUME Oe
| oersted oe Oe oersted gauss /
| mu0
|
| The units definitions file also contains many interesting facts,
| here's an excerpt: A ! # The
| ampere, symbol A, is the SI unit of electric current.
| ampere A # It is defined by taking the fixed numerical
| value of the amp ampere # elementary charge, e, to
| be 1.602 176 634 * 10^-19 when #
| expressed in the unit C, which is equal to A*s.
| # # The previous definition was the
| current which produces a # force of 2e-7
| N/m between two infinitely long wires a meter
| # apart. This definition was difficult to realize accurately.
| # # The ampere is actually realized by
| establishing the volt and # the ohm,
| since A = V / ohm. These measurements can be done
| # using the Josephson effect and the quantum Hall effect,
| # which accurately measure voltage and resistance, respectively,
| # with reference to two fixed constants, the Josephson
| # constant, K_J=2e/h and the von Klitzing constant, R_K=h/e^2.
| # Under the previous SI system, these constants had official
| # fixed values, defined in 1990. This created a situation
| # where the standard values for the volt and ohm were in some
| # sense outside of SI because they depended primarily on
| # constants different from the ones used to define SI. After
| # the revision, since e and h have exact definitions, the
| # Josephson and von Klitzing constants will also have exact
| # definitions that derive from SI instead of the conventional
| # 1990 values. #
| # In fact we know that there is a small offset between the
| # conventional values of the electrical units based on the
| # conventional 1990 values and the SI values. The new
| # definition, which brings the practical electrical units back
| # into SI, will lead to a one time change of +0.1ppm for
| # voltage values and +0.02ppm for resistance values.
| # # The previous definition resulted in
| fixed exact values for # the vacuum
| permeability (mu0), the impedance of free space
| # (Z0), the vacuum permittivity (epsilon0), and the Coulomb
| # constant. With the new definition, these four values are
| # subject to experimental error.
| mrbonner wrote:
| I haven't looked at the code for this but somehow I think the
| conversion problem is very similar to a graph search. If you
| build a graph in which the vertices are the units and the edges
| are compatible convert scales, you can use this graph with say,
| BFS to find the right traversal path. Multiplying the scales
| would get you the result converting from a unit to another. Or,
| dividing would give you the reversed conversion. I used to think
| we could use a hash table for this kind of stuff. It is faster of
| course but you need to account for all sort of conversion, even
| the crazy ones like Lightyear to feet's, for instant. With the
| graph, I think I could just throw everything in it. No matter how
| crazy the conversion is, if there is a path, you will get it!
|
| How does GNU unit get the conversion tables to bootstrap, does
| anybody know?
| cb321 wrote:
| It's more like a 2-level situation for most things with a
| little more structure than you might realize. There are
| "physical kinds" or meta types like "energy" and then different
| concrete units those can be which allow conversion.
|
| The physical kind is a point in an N-dimensional rational space
| of exponents of base units, such as Mass * Distance ^2 *
| Time^-2 or (1,2,-2) for energy (maybe with some carry over ^0s
| for unused slots of a >3D meta-type space). Additive (like add,
| subtract, compare, and convert) are only meaningful at the same
| point in that lattice. If you are interested in learning more,
| this is all a part of dimensional analysis:
| https://en.wikipedia.org/wiki/Dimensional_analysis .
|
| Even the dimensionality of that rational exponent space (the
| "unit system", if you will) is more of convenience / convention
| than fundamental. https://en.wikipedia.org/wiki/Planck_units
| clobber most things away leaving only 1 dimension (and a
| tendency for complex rational exponents). Meanwhile, the SI
| unit system is very "dimension promiscuous" (mass, length,
| time, electric current, temperature, amount of substance,
| luminous intensity) [1] to avoid non-integer exponents (but you
| cannot really forever since as soon as some formula has some
| square some solution of it has some root that probably gets you
| a 1/2 exponent).
|
| There are some situations with not purely "conversion factor"
| scale offsets like thermal units (e.g. Celsius to Fahrenheit)
| that people often describe in math-ese as "affine conversions".
| Something like GNU Units attends these things, but they are
| kind of "conversion only" orphan step-children more than "real"
| types which "compose better". In physics formulae one will
| often only care about delta-Temperature, not levels, for
| example.
|
| EDIT: The implicit creation of a potentially brand new type
| _any time you multiply | divide_ two extant things is,
| incidentally, why you need either a dynamic or a very powerful
| static type system to express these things.
|
| [1] https://en.wikipedia.org/wiki/International_System_of_Units
| kragen wrote:
| no dude you're seriously overcomplicating the problem
|
| it's just a finite-dimensional vector space over Q
|
| https://en.wikipedia.org/wiki/Dimensional_analysis#Mathemati...
|
| the conversion tables are in /usr/share/units/definitions.units
| (or previously /usr/share/misc/units.dat)
|
| they are the result of many years of careful scholarship by
| adrian mariano
| simplicio wrote:
| Think a spoke/hub type thing would be a lot easier. Just
| convert inputs to SI, then from SI to the output.
| seabass-labrax wrote:
| Parent was suggesting a hash table lookup though, in which
| case the topology of the graph would be irrelevant. The
| number of entries in the table would be constant regardless
| of whether the original graph was connected with the fewest
| number of edges or with the greatest number of edges (a
| complete graph, which is what the table would be encoding).
| ygra wrote:
| Wouldn't the most sensible option just be too have the SI units
| at the center and everything else heaving a conversion edge to
| that? While intriguing, there is probably no need to make that
| graph any denser.
| alfalfasprout wrote:
| Yep. Especially if using a bignum library to keep sufficient
| precision during the intermediate conversion.
| mrbonner wrote:
| Then how do you deal with non-SI units, like money?
| alfalfasprout wrote:
| Notice how money isn't handled (at least per the examples)
| by GNU Units. Because currency (and fungible financial
| instruments in general) have variable exchange rates.
|
| For currency conversion, it's a lot more tricky because
| there's many ways to convert. Eg; if I want to go from CHF
| to USD there's a lot of CHF->USD volume and there are
| market rates for that exact conversion. But between eg; SGD
| (singapore dollar) and Peruvian Soles (PEN) the market is a
| lot smaller so it may be actually beneficial to do SGD ->
| USD -> PEN.
|
| Typically this means ingesting a feed of real time prices +
| any fees and then doing a limited-hop graph traversal.
| kragen wrote:
| money is handled by gnu units
|
| the base unit is the us dollar
|
| this is arguably incorrect but inarguably useful
|
| from the man page:
|
| > _The units program database includes currency exchange
| rates and prices for some precious metals. Of course,
| these values change over time, sometimes very rapidly,
| and 'units' cannot provide real-time values. To update
| the exchange rates, run 'units_cur', which rewrites the
| file containing the currency rates, typically '
| /var/lib/units/currency.units' or
| '/usr/local/com/units/currency.units' on a Unix-like
| system or 'C:\Program Files
| (x86)\GNU\units\definitions.units' on a Windows system._
| mrbonner wrote:
| It is interesting because I see a file `currency.units`
| in the source distribution. It has the list of all
| countries' currencies normalized to USD. If Units doesn't
| deal with currency, why does it maintain this conversion
| file? And, I agree that the exchange rate varies day to
| day. But, this may provide an estimate conversion.
| seabass-labrax wrote:
| You can't really convert units of money to any other units,
| so I'm not convinced of the utility of money conversion in
| this kind of tool.
|
| US Dollars would be connected to US Cents in the graph, and
| Pounds Sterling and New Pence would be connected to each
| other too, but those two subgraphs would be entirely
| disconnected from each other and from any SI unit like
| distance or mass.
| tadfisher wrote:
| Money (currency, really) is a whole forest of units with
| bespoke scales, arithmetic, and market-driven conversion
| logic. If you are converting money to other units with a
| library, you are almost certainly doing it wrong, or are
| operating at a level of abstraction much higher than my
| puny brain can fathom.
| qbrass wrote:
| Convert to USD then back. Which is what Units does.
| simplicio wrote:
| Just pick a unit as the "standard" for that type of
| quantity.
| mrbonner wrote:
| I get it that some suggest the graph is a complicated/over-
| engineer while other suggest just stick to SI. Well, my
| rationale is that not everything has a SI conversion, and
| simple SI/hub/spoke would need you to maintain a unit -> SI (or
| base unit like USD in currency conversion).
|
| What I like about the graph solution is that you don't have to
| use SI or base unit at all! If your graph has km -> m, now you
| add (updating your graph) for m -> feet, you could traverse
| from km -> feet. Later on, you can add nautical mile -> feet,
| using this graph you could basically get km -> nautical mile if
| you need to.
| kragen wrote:
| this page seriously undersells the versatility and utility of the
| units program
|
| how long will my laptop take to charge at its current rate of
| charging? You have: (22.8 Wh - 16.8 Wh)/7.4W
| You want: time 48 min + 38.918919 sec
|
| how long will a 2000mAh 18650 cell take to discharge at 2.5
| watts, using a nominal voltage of 3.7 volts?
| You have: 3.7 V 2 amp hour / 2.5 watt You want: time
| 2 hr + 57 min + 36 sec
|
| what energy density is that, so i can compare it to the volume
| needed for other forms of energy storage? You
| have: 3.7 V 2 amp hour / circlearea(half 18 mm) 65 mm You
| want: MJ/ * 1.6105936 /
| 0.62088909
|
| what's the specific energy of stoichiometrically mixed
| oxyhydrogen fuel? You have: 44000 J/mol / ((2
| hydrogen + oxygen)g/mol) You want: MJ/kg
| * 2.4423711 / 0.40943818
|
| okay but how much volume? say at atmospheric pressure?
| You have: 3 mol gasconstant tempC(20) / 1 atm You want: l
| * 72.165351 / 0.013857066
|
| so that's how much energy density? You have:
| 44kJ/_ You want: J/l * 609.71089
| / 0.0016401216
|
| (i may be off by a factor of 2 here)
|
| how much energy can this capacitor hold? You
| have: half (10V)**2 47 uF You want: mJ *
| 2.35 / 0.42553191
|
| how much energy density is that? You have: half
| (10V)**2 47 mF / 15mm circlearea(3mm) You want: J/
| * 5.5409499 / 0.18047447
|
| how thick of a cable do i need to support me in a lightweight
| fabric-sling chair (or, from a different point of view, to pose a
| risk of accidental strangulation)? suppose its tensile strength
| is 2.7 gigapascals You have: 120kg gravity /
| 2.7 GPa You want: mm2 * 0.43585111
| / 2.2943615 You have: _ You want: circlearea
| 0.00037247244 m You have: _ You want: mm
| * 0.37247244 / 2.6847624
|
| note that this is the _radius_ of the cable, not its diameter!
|
| the datasheet says this 400x240 display uses 175 mW if all the
| pixels flip once per second and 60 mW for a static display. how
| much energy is that per pixel flip? You have:
| (175 uW - 50 uW) / 400 240 1 Hz You want: nJ
| * 1.3020833 / 0.768
|
| if i overclock it to 60 fps how much power will it use?
| You have: 60 Hz 400 240 1.3nJ You want: mW
| * 7488 / 0.00013354701
|
| and how many pixels is its diagonal? You have:
| 400**2+240**2 You want: Definition:
| 217600 You have: _**.5 You want:
| Definition: 466.47615
|
| what is the visual angle subtended by the sun as seen from earth?
| You have: 2 sunradius/sundist You want: milliradians
| * 9.3049358 / 0.10746984 You have: _
| You want: dms 31 arcmin + 59.280781 arcsec
|
| okay, how does that compare to the moon? You
| have: moonradius 2 / moondist You want:
| Definition: 0.0090426639
|
| on average the moon looks a little smaller, which is why annular
| eclipses are so common, but we can also calculate that total
| eclipses are possible because sometimes the moon looks bigger
| You have: moonradius 2 / moondist_min You want:
| Definition: 0.0097530864
|
| what percentage of this copper sulfate is actual copper?
| You have: copper / (copper + (sulfur + 4 oxygen)) You
| want: % * 39.813395 / 0.025117175
|
| how fast can i write to this slc flash chip without wearing it
| out in 53 years, assuming perfect wear leveling and no write
| amplification? You have: 100 thousand 128
| MiB/53 years You want: bytes/second *
| 8024.8943 / 0.00012461223
|
| how much fuel will this truck need to get across the country?
| You have: 4000 km / (6.5 miles/gallon) You want: l
| * 1447.4744 / 0.00069085852
|
| how much is that per kilogram of lettuce or sodium lauryl sulfate
| or whatever? You have: _/28 tonnes You
| want: ml/kg * 51.695513 /
| 0.019344039
|
| okay, but how much energy is 52 m of diesel per kg of lettuce?
| You have: _ 38.6 kJ/l You want: kJ/kg *
| 1.9954468 / 0.5011409
|
| how much data can i transfer overnight during unmetered hours on
| a 2400-baud modem? You have: 8 hours 2400 bps
| You want: MB * 8.64 / 0.11574074
|
| how much power does the earth receive from the sun, assuming a
| solar constant of 1400 W/m2? You have: 1400
| W/m**2 * circlearea(earthradius) You want: petawatts
| * 178.52313 / 0.0056015152
|
| what would the equilibrium temperature of an object be if it were
| illuminated at that brightness and had a flat emission spectrum?
| You have: (1400 W/m**2 / stefanboltzmann)**(1/4) You
| want: tempC 123.24583
|
| how about here in buenos aires at the winter solstice? first,
| what angle is the sun at anyway? we're at 34deg36' south, and the
| sun's latitude at the solstice is 23deg26' You
| have: 34deg + 36' + 23deg + 26' You want: dms
| 58 deg + 2 arcmin
|
| so that reduces the peak insolation to how much? here underneath
| the atmosphere we only get 1kW/m2 You have:
| cos(_) 1000 W/m^2 You want: W/m^2 *
| 529.4258 / 0.0018888388
|
| and that would be what temperature in equilibrium?
| You have: (_/stefanboltzmann)**(1/4) You want: tempC
| 37.698189
|
| (integrating the sun's angle over the course of the day as the
| earth rotates is sadly beyond its capacities)
|
| how much money could a sensible heat storage reservoir of 15 kg
| of water save me over 16 years? say power rates go down to only
| 2.5C//kWh because of solar You have: 1500
| kcal/day * 16 years * 2.5 cents/kWh You want:
| Definition: 254.69556 US$
|
| what's the surface area of a 300mm x 400mm x 150mm backpack? like
| how much cloth? You have: 2 (300mm 400mm +
| 400mm 150mm + 150mm 300mm) You want:
| Definition: 0.45 m^2
|
| okay but in cm2 You have: _ You want:
| cm2 * 4500 / 0.00022222222
|
| what's the electrical impedance of a 1000 mF cap at an audio
| highpass frequency of 20Hz? You have: 1/(2 pi
| 20 Hz 1000 uF) You want: ohms * 7.9577472
| / 0.12566371
|
| what's the time constant of 100 pF (roughly the smallest
| capacitance you can get in a macroscopic circuit with any degree
| of precision) and 1 MO? You have: 100 pF 1
| megohm You want: ms * 0.1
| / 10
|
| okay. so how long will an 0.1mF cap take to discharge through a
| 100kO resistor from 5 volts down to a 1.3 volt threshold?
| You have: ln(5V/1.3V) .1 uF 100kilohm You want: ms
| * 13.470736 / 0.074234991
|
| how many bits of precision does a linear adc need to be able to
| measure a difference of 1.8 millivolts if 1.5 volts is full-
| scale? You have: log(1.8mV/1.5V)/log(2)
| You want: Definition: -9.7027499
|
| if this oxygen absorber contains 7 grams of iron which oxidizes
| to Fe2O3, how much air can it remove all the oxygen from? air is
| 21% oxygen by volume (and roughly by mass) and weighs 1.2 grams
| per liter You have: 3 oxygen / 2 iron * 7 g
| You want: g * 3.0082138 /
| 0.33242318 You have: _/21%/(1.2g/) You want:
| * 11.937356 / 0.083770641
|
| i've lost 7 kg over the last two months; how much of a caloric
| deficit does that represent in my diet? You
| have: 7 kg 3500kcal/pound / 2 months You want: kcal/day
| * 887.30034 / 0.0011270141
|
| if you were to spread the moon evenly over russia, how deep would
| it be? You have: spherevol(moonradius) /
| area_russia You want: Definition:
| 1286134.4 m
|
| how big is nigeria compared to massachusetts?
| You have: area_nigeria/area_massachusetts You want:
| Definition: 33.793093
|
| how many ounces of platinum is a ton of oil worth at 40 dollars
| per megawatt hour? You have: tonoil 40
| dollars/MWh You want: platinumounce *
| 0.58368883 / 1.7132416
|
| or in grams? You have: tonoil 40 dollars/MWh /
| platinumprice You want: g * 18.154752
| / 0.055081997
| chungy wrote:
| Trying your examples, especially considering that the
| elliptical orbit of the earth likewise causes the Sun's angular
| diameter change depending on where our orbit is, I found that
| Units current has a buggy definition of moondist_min and
| moondist_max. It's defined in the definitions file as 356.371
| km and 406.720 km respectively. These should be Mm! (Or remove
| the period, either will work)
|
| Just to work around the bug, you can use a local definitions
| file to correct it: cat > ~/.units <<EOF
| moondist_min 356.371 Mm moondist_max 406.720 Mm
| EOF
| kragen wrote:
| interesting, looks like an effort to improve the precision
| resulted in a factor of 1000 error! `help moondist_max` shows
| me considerably less precise values:
| sundist 1.0000010178 au # mean earth-sun
| distance moondist 3.844e8 m #
| mean earth-moon distance sundist_near
| 1.471e11 m # earth-sun distance at perihelion
| sundist_far 1.521e11 m # earth-sun distance
| at aphelion moondist_min 3.564e8 m #
| approximate least distance at
| # perigee 1901-2300 moondist_max
| 4.067e8 m # approximate greatest distance at
| # apogee 1901-2300
| chungy wrote:
| Where are you typing help to get that output?
| kragen wrote:
| at the units prompt You have: help
| moondist_max
|
| then i scrolled up a few lines in less
| chungy wrote:
| I could've sworn I tried and didn't get anything. Now it
| is working. I don't know what I did! (running version
| 2.22, at any rate)
| kragen wrote:
| sweet
|
| search is also pretty nice You have:
| search gallon alegallon beergallon
| beergallon 282 UKinch^3 brgallon
| 4.54609 l drygallon 1|2 uspeck
| gallon usgallon imperialgallon brgallon
| irishgallon 217.6 UKinch^3 scotsgallon
| 827.232 UKinch^3 usgallon 231 in^3
| winegallon 231 UKinch^3
| rany_ wrote:
| I personally use Qalculate (https://qalculate.github.io/),
| specifically their CLI version for this purpose. I'm not sure how
| well it compares to GNU Units, but it works well enough for my
| needs; and it's fairly simple due to the English syntax.
| krylon wrote:
| I was about to say the same. ;-) Except I use the Qt UI.
| m463 wrote:
| ah, so _that 's_ how you do degC / degF ... You
| have: tempF(45) You want: tempC 7.2222222
| ThinkingGuy wrote:
| Thanks, that was puzzling me at first.
___________________________________________________________________
(page generated 2023-08-03 23:00 UTC)