quant

package module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 19, 2026 License: MIT Imports: 5 Imported by: 0

README

quant

quant is a small, type-safe Go library for physical unit conversions using generics.

It uses phantom types to model dimensions like length, area, mass, volume, flow, time, temperature, electrical values, and more, so incompatible units cannot be mixed by accident at compile time.

Features

  • Compile-time dimension safety with Quantity[D]
  • Zero-dependency, idiomatic Go API
  • Internal storage in base units for predictable conversions
  • Fluent construction with Amount[D](v).From(unit)
  • Convenience constructors like quant.Pounds(10) and quant.Kilometers(5)
  • Safe arithmetic on matching dimensions only
  • Base-unit String() formatting and explicit unit-aware Format(...)
  • Derived dimensions with type-safe division for built-in combinations like length/time
  • JSON marshaling based on the scalar base-unit value
  • Text marshaling and database/sql interop helpers
  • Support for affine temperature conversions

Installation

	go get github.com/nodivbyzero/quant

Quick Start

package main

import (
	"fmt"

	"github.com/nodivbyzero/quant"
)

func main() {
	kg := quant.Amount[quant.Mass](10).From(quant.Pound).To(quant.Kilogram)
	fmt.Printf("%.6f\n", kg)
}

Output:

4.535924

Core API

type Quantity[D any] struct

func New[D any, U Unit[D]](v float64, u U) Quantity[D]

func (q Quantity[D]) To(u Unit[D]) float64
func (q Quantity[D]) Value(u Unit[D]) float64
func (q Quantity[D]) Format(u Unit[D]) string
func (q Quantity[D]) MarshalJSON() ([]byte, error)
func (q *Quantity[D]) UnmarshalJSON(data []byte) error
func (q Quantity[D]) MarshalText() ([]byte, error)
func (q *Quantity[D]) UnmarshalText(text []byte) error
func (q Quantity[D]) Add(other Quantity[D]) Quantity[D]
func (q Quantity[D]) Sub(other Quantity[D]) Quantity[D]

Amount[D](v).From(unit) is also available as a fluent constructor.

Convenience constructors are also available for direct creation from specific units, for example:

mass := quant.Pounds(10)
distance := quant.Kilometers(5)
temp := quant.DegreesCelsius(21)

Quantity[D] also implements fmt.Stringer in the base unit for its dimension, and supports explicit formatting in a chosen unit:

fmt.Println(quant.Pounds(10))                  // 4.5359237 kg
fmt.Println(quant.Pounds(10).Format(quant.Pound)) // 10 lb

JSON marshaling stores the scalar value in the base unit for the dimension:

data, _ := json.Marshal(quant.Pounds(10))
fmt.Println(string(data)) // 4.535923700000001

Text marshaling follows the same base-unit rule:

text, _ := quant.Pounds(10).MarshalText()
fmt.Println(string(text)) // 4.5359237

For database/sql, use the adapter helper:

value, _ := quant.SQL(quant.Kilograms(5)).Value()
fmt.Println(value) // 5

All quantities are stored internally in a base unit for their dimension:

  • Acceleration: meter per second squared
  • Acidity: pH
  • Angle: radian
  • Area: square meter
  • Apparent power: volt-ampere
  • Charge: coulomb
  • Current: ampere
  • Digital: bit
  • Electrical conductivity: siemens per meter
  • Energy: joule
  • Force: newton
  • Frequency: hertz
  • Illuminance: lux
  • Length: meter
  • Mass: kilogram
  • Pace: second per meter
  • Parts-per: ratio
  • Pieces: piece
  • Power: watt
  • Pressure: pascal
  • Reactive energy: volt-ampere reactive hour
  • Reactive power: volt-ampere reactive
  • Speed: meter per second
  • Temperature: kelvin
  • Time: second
  • Torque: newton-meter
  • Voltage: volt
  • Volume: cubic meter
  • Volume flow rate: cubic meter per second

Examples By Dimension

  • Acceleration: ms2 := quant.GForces(1).To(quant.MeterPerSecondSquared)
  • Acidity: poh := quant.PHValue(3).To(quant.POH)
  • Angle: rad := quant.Degrees(180).To(quant.Radian)
  • Area: m2 := quant.Acres(1).To(quant.SquareMeter)
  • Apparent power: va := quant.MegaVoltAmperes(1).To(quant.VoltAmpere)
  • Charge: mc := quant.Coulombs(1).To(quant.Millicoulomb)
  • Current: a := quant.Kiloamperes(1).To(quant.Ampere)
  • Digital: bytes := quant.Kibibytes(1).To(quant.Byte)
  • Electrical conductivity: sm := quant.MillisiemensPerCentimeters(1).To(quant.SiemensPerMeter)
  • Energy: j := quant.KilowattHours(1).To(quant.Joule)
  • Force: n := quant.KilogramsForce(1).To(quant.Newton)
  • Frequency: hz := quant.RevolutionsPerMinute(60).To(quant.Hertz)
  • Illuminance: lx := quant.FootCandles(1).To(quant.Lux)
  • Length: km := quant.Miles(3).To(quant.Kilometer)
  • Mass: kg := quant.Pounds(10).To(quant.Kilogram)
  • Pace: spm := quant.MinutesPerKilometer(5).To(quant.SecondPerMeter)
  • Parts-per: ppb := quant.PartsPerMillion(1).To(quant.PPB)
  • Pieces: pcs := quant.Dozens(1).To(quant.Piece)
  • Power: w := quant.HorsepowerValues(1).To(quant.Watt)
  • Pressure: pa := quant.Bars(1).To(quant.Pascal)
  • Reactive energy: varh := quant.MegaVoltAmpereReactiveHours(1).To(quant.KiloVoltAmpereReactiveHour)
  • Reactive power: vars := quant.MegaVoltAmpereReactives(1).To(quant.KiloVoltAmpereReactive)
  • Speed: kmh := quant.MetersPerSecond(10).To(quant.KilometerPerHour)
  • Temperature: k := quant.DegreesCelsius(25).To(quant.Kelvin)
  • Time: years := quant.Decades(1).To(quant.Year)
  • Torque: nm := quant.PoundForceFeet(1).To(quant.NewtonMeter)
  • Voltage: v := quant.Kilovolts(1).To(quant.Volt)
  • Volume: l := quant.Gallons(1).To(quant.Liter)
  • Volume flow rate: ls := quant.LitersPerMinute(60).To(quant.LiterPerSecond)
Arithmetic
total := quant.Meters(750).Add(quant.Kilometers(1.25))
fmt.Println(total.To(quant.Meter)) // 2000
Derived units
distance := quant.Kilometers(5)
duration := quant.Minutes(30)
speed := distance.Div(duration)

fmt.Println(speed.To(quant.KilometerPerHour)) // 10

Supported Dimensions

  • Acceleration: MeterPerSecondSquared, GForce, StandardGravity
  • Acidity: PH, POH
  • Angle: Degree, Radian, Gradian, ArcMinute, ArcSecond
  • Area: SquareMillimeter (mm2), SquareCentimeter (cm2), SquareMeter (m2), Hectare (ha), SquareKilometer (km2), SquareInch (in2), SquareFoot (ft2), Acre (ac), SquareMile (mi2)
  • Apparent power: VoltAmpere, MilliVoltAmpere, KiloVoltAmpere, MegaVoltAmpere, GigaVoltAmpere
  • Charge: Coulomb, Millicoulomb, Microcoulomb, Nanocoulomb, Picocoulomb
  • Current: Ampere, Milliampere, Kiloampere
  • Digital: Bit, Kilobit, Megabit, Gigabit, Terabit, Byte, Kilobyte, Megabyte, Gigabyte, Terabyte, Petabyte, Kibibyte, Mebibyte, Gibibyte, Tebibyte
  • Electrical conductivity: SiemensPerMeter, MillisiemensPerMeter, MicrosiemensPerMeter, SiemensPerCentimeter, MillisiemensPerCentimeter, MicrosiemensPerCentimeter
  • Energy: WattSecond, WattMinute, MilliwattHour, WattHour, KilowattHour, MegawattHour, GigawattHour, Joule, Kilojoule, Megajoule, Gigajoule
  • Force: Newton, Kilonewton, PoundForce, KilogramForce
  • Frequency: Hertz, Millihertz, Kilohertz, Megahertz, Gigahertz, Terahertz, RevolutionPerMinute, DegreePerSecond, RadianPerSecond
  • Illuminance: Lux, FootCandle
  • Length: Nanometer, Micrometer, Millimeter, Centimeter, Meter, Inch, Yard, USFoot, Foot, Fathom, Kilometer, Mile, NauticalMile
  • Mass: Microgram (mcg), Milligram (mg), Gram (g), Kilogram (kg), Ounce (oz), Pound (lb), MetricTon (mt), Stone (st), Tonne (t)
  • Pace: SecondPerMeter, MinutePerKilometer, SecondPerFoot, MinutePerMile
  • Parts-per: PPM, PPB, PPT, PPQ
  • Pieces: Piece, BakersDozen, Couple, DozenDozen, Dozen, GreatGross, Gross, HalfDozen, LongHundred, Ream, Score, SmallGross, Trio
  • Pressure: Pascal, Hectopascal, Kilopascal, Megapascal, Bar, Torr, MeterOfWater, MillimeterOfMercury, PSI, KSI
  • Power: Watt, Milliwatt, Kilowatt, Megawatt, Gigawatt, MetricHorsepower, BTUPerSecond, FootPoundForcePerSecond, Horsepower
  • Reactive power: VoltAmpereReactive, MilliVoltAmpereReactive, KiloVoltAmpereReactive, MegaVoltAmpereReactive, GigaVoltAmpereReactive
  • Reactive energy: VoltAmpereReactiveHour, MilliVoltAmpereReactiveHour, KiloVoltAmpereReactiveHour, MegaVoltAmpereReactiveHour, GigaVoltAmpereReactiveHour
  • Speed: MeterPerSecond, KilometerPerHour, MilePerHour, MeterPerHour, Knot, FootPerSecond, InchPerHour, MillimeterPerHour
  • Temperature: Celsius, Fahrenheit, Kelvin, Rankine
  • Time: Nanosecond, Microsecond, Millisecond, Second, Minute, Hour, Day, Week, Month, Year, Decade, Century
  • Torque: NewtonMeter, PoundForceFoot
  • Voltage: Volt, Millivolt, Kilovolt
  • Volume: CubicMillimeter, CubicCentimeter, Milliliter, Liter, Kiloliter, Megaliter, Gigaliter, CubicMeter, CubicKilometer, Teaspoon, Tablespoon, CubicInch, FluidOunce, Cup, Pint, Quart, Gallon, CubicFoot, CubicYard
  • Volume flow rate: CubicMillimeterPerSecond, CubicCentimeterPerSecond, MilliliterPerSecond, CentiliterPerSecond, DeciliterPerSecond, LiterPerSecond, LiterPerMinute, LiterPerHour, KiloliterPerSecond, KiloliterPerMinute, KiloliterPerHour, CubicMeterPerSecond, CubicMeterPerMinute, CubicMeterPerHour, CubicKilometerPerSecond, TeaspoonPerSecond, TablespoonPerSecond, CubicInchPerSecond, CubicInchPerMinute, CubicInchPerHour, FluidOuncePerSecond, FluidOuncePerMinute, FluidOuncePerHour, CupPerSecond, PintPerSecond, PintPerMinute, PintPerHour, QuartPerSecond, GallonPerSecond, GallonPerMinute, GallonPerHour, CubicFootPerSecond, CubicFootPerMinute, CubicFootPerHour, CubicYardPerSecond, CubicYardPerMinute, CubicYardPerHour

Type Safety

Dimensions are enforced by the type system.

These compile:

distance := quant.New[quant.Length](5, quant.Meter)
extra := quant.New[quant.Length](2, quant.Kilometer)
total := distance.Add(extra)
_ = total.To(quant.Mile)

These do not compile:

distance := quant.New[quant.Length](5, quant.Meter)
mass := quant.New[quant.Mass](2, quant.Kilogram)

_ = distance.Add(mass)
_ = distance.To(quant.Pound)

Temperature Conversions

Temperature uses affine conversion rather than a pure scale factor.

k := quant.New[quant.Temperature](25, quant.Celsius).To(quant.Kelvin)
fmt.Printf("%.2f\n", k) // 298.15

Acidity Conversions

Acidity supports PH and POH. PH is the base unit, and POH uses the standard 25 C relationship pH + pOH = 14.

poh := quant.PHValue(3).To(quant.POH)
fmt.Println(poh) // 11

Month, Year, Decade, and Century use average Gregorian durations: 365.25 / 12 days, 365.25 days, 10 * 365.25 days, and 100 * 365.25 days respectively.

Design Notes

  • No reflection
  • No string parsing
  • No runtime registry
  • No interface{}
  • No external dependencies

The package favors correctness and simplicity first, while keeping the implementation small and allocation-free in normal use.

Development

Run tests with:

go test ./...

Run benchmarks with:

go test -bench . ./...

Recent benchmark results on Apple M4:

BenchmarkNew-10        1000000000   0.7779 ns/op
BenchmarkTo-10          175765758   6.900 ns/op
BenchmarkAdd-10        1000000000   0.2607 ns/op
BenchmarkDiv-10        1000000000   0.2594 ns/op
BenchmarkString-10       17407522  71.04 ns/op
BenchmarkFormat-10       15354643  77.52 ns/op

Documentation

Overview

Package quant provides type-safe physical quantities and unit conversions using generics.

Quantities are stored in dimension-specific base units, and conversions are checked at compile time through phantom type parameters. The package includes built-in dimensions for common physical quantities, convenience constructors, same-dimension arithmetic, derived units such as speed from length divided by time, formatting helpers, and JSON, text, and SQL interop based on base-unit scalar values.

Example (Arithmetic)
package main

import (
	"fmt"

	"github.com/nodivbyzero/quant"
)

func main() {
	total := quant.New[quant.Length](750, quant.Meter).Add(quant.New[quant.Length](1.25, quant.Kilometer))
	fmt.Printf("%.0f\n", total.To(quant.Meter))
}
Output:
2000
Example (LengthConversion)
package main

import (
	"fmt"

	"github.com/nodivbyzero/quant"
)

func main() {
	km := quant.New[quant.Length](3, quant.Mile).To(quant.Kilometer)
	fmt.Printf("%.6f\n", km)
}
Output:
4.828032
Example (MassConversion)
package main

import (
	"fmt"

	"github.com/nodivbyzero/quant"
)

func main() {
	kg := quant.Amount[quant.Mass](10).From(quant.Pound).To(quant.Kilogram)
	fmt.Printf("%.6f\n", kg)
}
Output:
4.535924

Index

Examples

Constants

This section is empty.

Variables

View Source
var (
	MeterPerSecondSquared = scaleUnit[Acceleration]{/* contains filtered or unexported fields */}
	GForce                = scaleUnit[Acceleration]{/* contains filtered or unexported fields */}
	StandardGravity       = scaleUnit[Acceleration]{/* contains filtered or unexported fields */}
)

Acceleration units.

View Source
var (
	PH  = scaleUnit[Acidity]{/* contains filtered or unexported fields */}
	POH = affineUnit[Acidity]{/* contains filtered or unexported fields */}
)

Acidity units.

View Source
var (
	Radian    = scaleUnit[Angle]{/* contains filtered or unexported fields */}
	Degree    = scaleUnit[Angle]{/* contains filtered or unexported fields */}
	Gradian   = scaleUnit[Angle]{/* contains filtered or unexported fields */}
	ArcMinute = scaleUnit[Angle]{/* contains filtered or unexported fields */}
	ArcSecond = scaleUnit[Angle]{/* contains filtered or unexported fields */}
)

Angle units.

View Source
var (
	SquareMillimeter = scaleUnit[Area]{/* contains filtered or unexported fields */}
	SquareCentimeter = scaleUnit[Area]{/* contains filtered or unexported fields */}
	SquareMeter      = scaleUnit[Area]{/* contains filtered or unexported fields */}
	Hectare          = scaleUnit[Area]{/* contains filtered or unexported fields */}
	SquareKilometer  = scaleUnit[Area]{/* contains filtered or unexported fields */}
	SquareInch       = scaleUnit[Area]{/* contains filtered or unexported fields */}
	SquareFoot       = scaleUnit[Area]{/* contains filtered or unexported fields */}
	Acre             = scaleUnit[Area]{/* contains filtered or unexported fields */}
	SquareMile       = scaleUnit[Area]{/* contains filtered or unexported fields */}
)

Area units.

View Source
var (
	Coulomb      = scaleUnit[Charge]{/* contains filtered or unexported fields */}
	Millicoulomb = scaleUnit[Charge]{/* contains filtered or unexported fields */}
	Microcoulomb = scaleUnit[Charge]{/* contains filtered or unexported fields */}
	Nanocoulomb  = scaleUnit[Charge]{/* contains filtered or unexported fields */}
	Picocoulomb  = scaleUnit[Charge]{/* contains filtered or unexported fields */}
)

Charge units.

View Source
var (
	Bit      = scaleUnit[Digital]{/* contains filtered or unexported fields */}
	Kilobit  = scaleUnit[Digital]{/* contains filtered or unexported fields */}
	Megabit  = scaleUnit[Digital]{/* contains filtered or unexported fields */}
	Gigabit  = scaleUnit[Digital]{/* contains filtered or unexported fields */}
	Terabit  = scaleUnit[Digital]{/* contains filtered or unexported fields */}
	Byte     = scaleUnit[Digital]{/* contains filtered or unexported fields */}
	Kilobyte = scaleUnit[Digital]{/* contains filtered or unexported fields */}
	Megabyte = scaleUnit[Digital]{/* contains filtered or unexported fields */}
	Gigabyte = scaleUnit[Digital]{/* contains filtered or unexported fields */}
	Terabyte = scaleUnit[Digital]{/* contains filtered or unexported fields */}
	Petabyte = scaleUnit[Digital]{/* contains filtered or unexported fields */}
	Kibibyte = scaleUnit[Digital]{/* contains filtered or unexported fields */}
	Mebibyte = scaleUnit[Digital]{/* contains filtered or unexported fields */}
	Gibibyte = scaleUnit[Digital]{/* contains filtered or unexported fields */}
	Tebibyte = scaleUnit[Digital]{/* contains filtered or unexported fields */}
)

Digital units.

View Source
var (
	Volt      = scaleUnit[Voltage]{/* contains filtered or unexported fields */}
	Millivolt = scaleUnit[Voltage]{/* contains filtered or unexported fields */}
	Kilovolt  = scaleUnit[Voltage]{/* contains filtered or unexported fields */}
)

Voltage units.

View Source
var (
	Ampere      = scaleUnit[Current]{/* contains filtered or unexported fields */}
	Milliampere = scaleUnit[Current]{/* contains filtered or unexported fields */}
	Kiloampere  = scaleUnit[Current]{/* contains filtered or unexported fields */}
)

Current units.

View Source
var (
	Watt                    = scaleUnit[Power]{/* contains filtered or unexported fields */}
	Milliwatt               = scaleUnit[Power]{/* contains filtered or unexported fields */}
	Kilowatt                = scaleUnit[Power]{/* contains filtered or unexported fields */}
	Megawatt                = scaleUnit[Power]{/* contains filtered or unexported fields */}
	Gigawatt                = scaleUnit[Power]{/* contains filtered or unexported fields */}
	MetricHorsepower        = scaleUnit[Power]{/* contains filtered or unexported fields */}
	BTUPerSecond            = scaleUnit[Power]{/* contains filtered or unexported fields */}
	FootPoundForcePerSecond = scaleUnit[Power]{/* contains filtered or unexported fields */}
	Horsepower              = scaleUnit[Power]{/* contains filtered or unexported fields */}
)

Power units.

View Source
var (
	VoltAmpere      = scaleUnit[ApparentPower]{/* contains filtered or unexported fields */}
	MilliVoltAmpere = scaleUnit[ApparentPower]{/* contains filtered or unexported fields */}
	KiloVoltAmpere  = scaleUnit[ApparentPower]{/* contains filtered or unexported fields */}
	MegaVoltAmpere  = scaleUnit[ApparentPower]{/* contains filtered or unexported fields */}
	GigaVoltAmpere  = scaleUnit[ApparentPower]{/* contains filtered or unexported fields */}
)

Apparent power units.

View Source
var (
	VoltAmpereReactive      = scaleUnit[ReactivePower]{/* contains filtered or unexported fields */}
	MilliVoltAmpereReactive = scaleUnit[ReactivePower]{/* contains filtered or unexported fields */}
	KiloVoltAmpereReactive  = scaleUnit[ReactivePower]{/* contains filtered or unexported fields */}
	MegaVoltAmpereReactive  = scaleUnit[ReactivePower]{/* contains filtered or unexported fields */}
	GigaVoltAmpereReactive  = scaleUnit[ReactivePower]{/* contains filtered or unexported fields */}
)

Reactive power units.

View Source
var (
	SiemensPerMeter           = scaleUnit[ElectricalConductivity]{/* contains filtered or unexported fields */}
	MillisiemensPerMeter      = scaleUnit[ElectricalConductivity]{/* contains filtered or unexported fields */}
	MicrosiemensPerMeter      = scaleUnit[ElectricalConductivity]{/* contains filtered or unexported fields */}
	SiemensPerCentimeter      = scaleUnit[ElectricalConductivity]{/* contains filtered or unexported fields */}
	MillisiemensPerCentimeter = scaleUnit[ElectricalConductivity]{/* contains filtered or unexported fields */}
	MicrosiemensPerCentimeter = scaleUnit[ElectricalConductivity]{/* contains filtered or unexported fields */}
)

Electrical conductivity units.

View Source
var (
	Joule         = scaleUnit[Energy]{/* contains filtered or unexported fields */}
	Kilojoule     = scaleUnit[Energy]{/* contains filtered or unexported fields */}
	Megajoule     = scaleUnit[Energy]{/* contains filtered or unexported fields */}
	Gigajoule     = scaleUnit[Energy]{/* contains filtered or unexported fields */}
	WattSecond    = scaleUnit[Energy]{/* contains filtered or unexported fields */}
	WattMinute    = scaleUnit[Energy]{/* contains filtered or unexported fields */}
	MilliwattHour = scaleUnit[Energy]{/* contains filtered or unexported fields */}
	WattHour      = scaleUnit[Energy]{/* contains filtered or unexported fields */}
	KilowattHour  = scaleUnit[Energy]{/* contains filtered or unexported fields */}
	MegawattHour  = scaleUnit[Energy]{/* contains filtered or unexported fields */}
	GigawattHour  = scaleUnit[Energy]{/* contains filtered or unexported fields */}
)

Energy units.

View Source
var (
	VoltAmpereReactiveHour      = scaleUnit[ReactiveEnergy]{/* contains filtered or unexported fields */}
	MilliVoltAmpereReactiveHour = scaleUnit[ReactiveEnergy]{/* contains filtered or unexported fields */}
	KiloVoltAmpereReactiveHour  = scaleUnit[ReactiveEnergy]{/* contains filtered or unexported fields */}
	MegaVoltAmpereReactiveHour  = scaleUnit[ReactiveEnergy]{/* contains filtered or unexported fields */}
	GigaVoltAmpereReactiveHour  = scaleUnit[ReactiveEnergy]{/* contains filtered or unexported fields */}
)

Reactive energy units.

View Source
var (
	Newton        = scaleUnit[Force]{/* contains filtered or unexported fields */}
	Kilonewton    = scaleUnit[Force]{/* contains filtered or unexported fields */}
	PoundForce    = scaleUnit[Force]{/* contains filtered or unexported fields */}
	KilogramForce = scaleUnit[Force]{/* contains filtered or unexported fields */}
)

Force units.

View Source
var (
	Hertz               = scaleUnit[Frequency]{/* contains filtered or unexported fields */}
	Millihertz          = scaleUnit[Frequency]{/* contains filtered or unexported fields */}
	Kilohertz           = scaleUnit[Frequency]{/* contains filtered or unexported fields */}
	Megahertz           = scaleUnit[Frequency]{/* contains filtered or unexported fields */}
	Gigahertz           = scaleUnit[Frequency]{/* contains filtered or unexported fields */}
	Terahertz           = scaleUnit[Frequency]{/* contains filtered or unexported fields */}
	RevolutionPerMinute = scaleUnit[Frequency]{/* contains filtered or unexported fields */}
	DegreePerSecond     = scaleUnit[Frequency]{/* contains filtered or unexported fields */}
	RadianPerSecond     = scaleUnit[Frequency]{/* contains filtered or unexported fields */}
)

Frequency units.

View Source
var (
	Lux        = scaleUnit[Illuminance]{/* contains filtered or unexported fields */}
	FootCandle = scaleUnit[Illuminance]{/* contains filtered or unexported fields */}
)

Illuminance units.

View Source
var (
	Nanometer    = scaleUnit[Length]{/* contains filtered or unexported fields */}
	Micrometer   = scaleUnit[Length]{/* contains filtered or unexported fields */}
	Millimeter   = scaleUnit[Length]{/* contains filtered or unexported fields */}
	Centimeter   = scaleUnit[Length]{/* contains filtered or unexported fields */}
	Meter        = scaleUnit[Length]{/* contains filtered or unexported fields */}
	Inch         = scaleUnit[Length]{/* contains filtered or unexported fields */}
	Yard         = scaleUnit[Length]{/* contains filtered or unexported fields */}
	USFoot       = scaleUnit[Length]{/* contains filtered or unexported fields */}
	Foot         = scaleUnit[Length]{/* contains filtered or unexported fields */}
	Fathom       = scaleUnit[Length]{/* contains filtered or unexported fields */}
	Kilometer    = scaleUnit[Length]{/* contains filtered or unexported fields */}
	Mile         = scaleUnit[Length]{/* contains filtered or unexported fields */}
	NauticalMile = scaleUnit[Length]{/* contains filtered or unexported fields */}
)

Length units.

View Source
var (
	Microgram = scaleUnit[Mass]{/* contains filtered or unexported fields */}
	Milligram = scaleUnit[Mass]{/* contains filtered or unexported fields */}
	Gram      = scaleUnit[Mass]{/* contains filtered or unexported fields */}
	Kilogram  = scaleUnit[Mass]{/* contains filtered or unexported fields */}
	Ounce     = scaleUnit[Mass]{/* contains filtered or unexported fields */}
	Pound     = scaleUnit[Mass]{/* contains filtered or unexported fields */}
	Stone     = scaleUnit[Mass]{/* contains filtered or unexported fields */}
	MetricTon = scaleUnit[Mass]{/* contains filtered or unexported fields */}
	Tonne     = scaleUnit[Mass]{/* contains filtered or unexported fields */}
)

Mass units.

View Source
var (
	SecondPerMeter     = scaleUnit[Pace]{/* contains filtered or unexported fields */}
	MinutePerKilometer = scaleUnit[Pace]{/* contains filtered or unexported fields */}
	SecondPerFoot      = scaleUnit[Pace]{/* contains filtered or unexported fields */}
	MinutePerMile      = scaleUnit[Pace]{/* contains filtered or unexported fields */}
)

Pace units.

View Source
var (
	Ratio = scaleUnit[PartsPer]{/* contains filtered or unexported fields */}
	PPM   = scaleUnit[PartsPer]{/* contains filtered or unexported fields */}
	PPB   = scaleUnit[PartsPer]{/* contains filtered or unexported fields */}
	PPT   = scaleUnit[PartsPer]{/* contains filtered or unexported fields */}
	PPQ   = scaleUnit[PartsPer]{/* contains filtered or unexported fields */}
)

Parts-per units.

View Source
var (
	Piece       = scaleUnit[Pieces]{/* contains filtered or unexported fields */}
	BakersDozen = scaleUnit[Pieces]{/* contains filtered or unexported fields */}
	Couple      = scaleUnit[Pieces]{/* contains filtered or unexported fields */}
	DozenDozen  = scaleUnit[Pieces]{/* contains filtered or unexported fields */}
	Dozen       = scaleUnit[Pieces]{/* contains filtered or unexported fields */}
	GreatGross  = scaleUnit[Pieces]{/* contains filtered or unexported fields */}
	Gross       = scaleUnit[Pieces]{/* contains filtered or unexported fields */}
	HalfDozen   = scaleUnit[Pieces]{/* contains filtered or unexported fields */}
	LongHundred = scaleUnit[Pieces]{/* contains filtered or unexported fields */}
	Ream        = scaleUnit[Pieces]{/* contains filtered or unexported fields */}
	Score       = scaleUnit[Pieces]{/* contains filtered or unexported fields */}
	SmallGross  = scaleUnit[Pieces]{/* contains filtered or unexported fields */}
	Trio        = scaleUnit[Pieces]{/* contains filtered or unexported fields */}
)

Pieces units.

View Source
var (
	Pascal              = scaleUnit[Pressure]{/* contains filtered or unexported fields */}
	Hectopascal         = scaleUnit[Pressure]{/* contains filtered or unexported fields */}
	Kilopascal          = scaleUnit[Pressure]{/* contains filtered or unexported fields */}
	Megapascal          = scaleUnit[Pressure]{/* contains filtered or unexported fields */}
	Bar                 = scaleUnit[Pressure]{/* contains filtered or unexported fields */}
	Torr                = scaleUnit[Pressure]{/* contains filtered or unexported fields */}
	MeterOfWater        = scaleUnit[Pressure]{/* contains filtered or unexported fields */}
	MillimeterOfMercury = scaleUnit[Pressure]{/* contains filtered or unexported fields */}
	PSI                 = scaleUnit[Pressure]{/* contains filtered or unexported fields */}
	KSI                 = scaleUnit[Pressure]{/* contains filtered or unexported fields */}
)

Pressure units.

View Source
var (
	MeterPerSecond    = scaleUnit[Speed]{/* contains filtered or unexported fields */}
	KilometerPerHour  = scaleUnit[Speed]{/* contains filtered or unexported fields */}
	MilePerHour       = scaleUnit[Speed]{/* contains filtered or unexported fields */}
	MeterPerHour      = scaleUnit[Speed]{/* contains filtered or unexported fields */}
	Knot              = scaleUnit[Speed]{/* contains filtered or unexported fields */}
	FootPerSecond     = scaleUnit[Speed]{/* contains filtered or unexported fields */}
	InchPerHour       = scaleUnit[Speed]{/* contains filtered or unexported fields */}
	MillimeterPerHour = scaleUnit[Speed]{/* contains filtered or unexported fields */}
)

Speed units.

View Source
var (
	Kelvin     = affineUnit[Temperature]{/* contains filtered or unexported fields */}
	Celsius    = affineUnit[Temperature]{/* contains filtered or unexported fields */}
	Fahrenheit = affineUnit[Temperature]{/* contains filtered or unexported fields */}
	Rankine    = affineUnit[Temperature]{/* contains filtered or unexported fields */}
)

Temperature units.

View Source
var (
	Nanosecond  = scaleUnit[Time]{/* contains filtered or unexported fields */}
	Microsecond = scaleUnit[Time]{/* contains filtered or unexported fields */}
	Millisecond = scaleUnit[Time]{/* contains filtered or unexported fields */}
	Second      = scaleUnit[Time]{/* contains filtered or unexported fields */}
	Minute      = scaleUnit[Time]{/* contains filtered or unexported fields */}
	Hour        = scaleUnit[Time]{/* contains filtered or unexported fields */}
	Day         = scaleUnit[Time]{/* contains filtered or unexported fields */}
	Week        = scaleUnit[Time]{/* contains filtered or unexported fields */}
	Month       = scaleUnit[Time]{/* contains filtered or unexported fields */}
	Year        = scaleUnit[Time]{/* contains filtered or unexported fields */}
	Decade      = scaleUnit[Time]{/* contains filtered or unexported fields */}
	Century     = scaleUnit[Time]{/* contains filtered or unexported fields */}
)

Time units.

View Source
var (
	NewtonMeter    = scaleUnit[Torque]{/* contains filtered or unexported fields */}
	PoundForceFoot = scaleUnit[Torque]{/* contains filtered or unexported fields */}
)

Torque units.

View Source
var (
	CubicMillimeter = scaleUnit[Volume]{/* contains filtered or unexported fields */}
	CubicCentimeter = scaleUnit[Volume]{/* contains filtered or unexported fields */}
	Milliliter      = scaleUnit[Volume]{/* contains filtered or unexported fields */}
	Liter           = scaleUnit[Volume]{/* contains filtered or unexported fields */}
	Kiloliter       = scaleUnit[Volume]{/* contains filtered or unexported fields */}
	Megaliter       = scaleUnit[Volume]{/* contains filtered or unexported fields */}
	Gigaliter       = scaleUnit[Volume]{/* contains filtered or unexported fields */}
	CubicMeter      = scaleUnit[Volume]{/* contains filtered or unexported fields */}
	CubicKilometer  = scaleUnit[Volume]{/* contains filtered or unexported fields */}
	Teaspoon        = scaleUnit[Volume]{/* contains filtered or unexported fields */}
	Tablespoon      = scaleUnit[Volume]{/* contains filtered or unexported fields */}
	CubicInch       = scaleUnit[Volume]{/* contains filtered or unexported fields */}
	FluidOunce      = scaleUnit[Volume]{/* contains filtered or unexported fields */}
	Cup             = scaleUnit[Volume]{/* contains filtered or unexported fields */}
	Pint            = scaleUnit[Volume]{/* contains filtered or unexported fields */}
	Quart           = scaleUnit[Volume]{/* contains filtered or unexported fields */}
	Gallon          = scaleUnit[Volume]{/* contains filtered or unexported fields */}
	CubicFoot       = scaleUnit[Volume]{/* contains filtered or unexported fields */}
	CubicYard       = scaleUnit[Volume]{/* contains filtered or unexported fields */}
)

Volume units.

View Source
var (
	CubicMillimeterPerSecond = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	CubicCentimeterPerSecond = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	MilliliterPerSecond      = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	CentiliterPerSecond      = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	DeciliterPerSecond       = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	LiterPerSecond           = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	LiterPerMinute           = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	LiterPerHour             = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	KiloliterPerSecond       = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	KiloliterPerMinute       = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	KiloliterPerHour         = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	CubicMeterPerSecond      = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	CubicMeterPerMinute      = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	CubicMeterPerHour        = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	CubicKilometerPerSecond  = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	TeaspoonPerSecond        = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	TablespoonPerSecond      = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	CubicInchPerSecond       = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	CubicInchPerMinute       = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	CubicInchPerHour         = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	FluidOuncePerSecond      = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	FluidOuncePerMinute      = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	FluidOuncePerHour        = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	CupPerSecond             = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	PintPerSecond            = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	PintPerMinute            = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	PintPerHour              = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	QuartPerSecond           = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	GallonPerSecond          = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	GallonPerMinute          = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	GallonPerHour            = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	CubicFootPerSecond       = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	CubicFootPerMinute       = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	CubicFootPerHour         = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	CubicYardPerSecond       = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	CubicYardPerMinute       = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
	CubicYardPerHour         = scaleUnit[VolumeFlowRate]{/* contains filtered or unexported fields */}
)

Volume flow rate units.

Functions

func Amount

func Amount[D any](v float64) builder[D]

Amount starts a fluent quantity construction.

Types

type Acceleration

type Acceleration = Div[Speed, Time]

Acceleration is the derived dimension for speed divided by time.

type Acidity added in v1.0.1

type Acidity struct{}

Acidity is the dimension marker for acidity quantities.

PH is the base unit. POH conversions use the standard 25 C relationship: pH + pOH = 14.

type Angle

type Angle struct{}

Angle is the dimension marker for angular quantities.

type ApparentPower

type ApparentPower struct{}

ApparentPower is the dimension marker for apparent power quantities.

type Area

type Area struct{}

Area is the dimension marker for area quantities.

type Charge

type Charge struct{}

Charge is the dimension marker for electric charge quantities.

type Current

type Current struct{}

Current is the dimension marker for electrical current quantities.

type Digital

type Digital struct{}

Digital is the dimension marker for digital information quantities.

type Div

type Div[A, B any] struct{}

Div is a phantom dimension representing the quotient of two dimensions.

type ElectricalConductivity added in v1.0.1

type ElectricalConductivity struct{}

ElectricalConductivity is the dimension marker for electrical conductivity quantities.

type Energy

type Energy struct{}

Energy is the dimension marker for energy quantities.

type Force

type Force struct{}

Force is the dimension marker for force quantities.

type Frequency

type Frequency struct{}

Frequency is the dimension marker for frequency-like quantities.

type Illuminance

type Illuminance struct{}

Illuminance is the dimension marker for illuminance quantities.

type Length

type Length struct{}

Length is the dimension marker for length quantities.

type Mass

type Mass struct{}

Mass is the dimension marker for mass quantities.

type Mul

type Mul[A, B any] struct{}

Mul is a phantom dimension representing the product of two dimensions.

type Pace

type Pace = Div[Time, Length]

Pace is the derived dimension for time divided by length.

type PartsPer

type PartsPer struct{}

PartsPer is the dimension marker for parts-per quantities.

type Pieces

type Pieces struct{}

Pieces is the dimension marker for count-based quantities.

type Power

type Power struct{}

Power is the dimension marker for active power quantities.

type Pressure

type Pressure struct{}

Pressure is the dimension marker for pressure quantities.

type Quantity

type Quantity[D any] struct {
	// contains filtered or unexported fields
}

Quantity stores a physical quantity in the base unit for its dimension.

The dimension type parameter is a phantom type used only for compile-time safety.

func Acres

func Acres(v float64) Quantity[Area]

func Amperes

func Amperes(v float64) Quantity[Current]

func ArcMinutes

func ArcMinutes(v float64) Quantity[Angle]

func ArcSeconds

func ArcSeconds(v float64) Quantity[Angle]

func BTUsPerSecond

func BTUsPerSecond(v float64) Quantity[Power]

func BakersDozens

func BakersDozens(v float64) Quantity[Pieces]

func Bars

func Bars(v float64) Quantity[Pressure]

func Bits

func Bits(v float64) Quantity[Digital]

Digital constructors.

func Bytes

func Bytes(v float64) Quantity[Digital]

func CentilitersPerSecond

func CentilitersPerSecond(v float64) Quantity[VolumeFlowRate]

func Centimeters

func Centimeters(v float64) Quantity[Length]

func Centuries added in v1.0.1

func Centuries(v float64) Quantity[Time]

func Coulombs

func Coulombs(v float64) Quantity[Charge]

Charge constructors.

func Couples

func Couples(v float64) Quantity[Pieces]

func CubicCentimeters

func CubicCentimeters(v float64) Quantity[Volume]

func CubicCentimetersPerSecond

func CubicCentimetersPerSecond(v float64) Quantity[VolumeFlowRate]

func CubicFeet

func CubicFeet(v float64) Quantity[Volume]

func CubicFeetPerHour

func CubicFeetPerHour(v float64) Quantity[VolumeFlowRate]

func CubicFeetPerMinute

func CubicFeetPerMinute(v float64) Quantity[VolumeFlowRate]

func CubicFeetPerSecond

func CubicFeetPerSecond(v float64) Quantity[VolumeFlowRate]

func CubicInches

func CubicInches(v float64) Quantity[Volume]

func CubicInchesPerHour

func CubicInchesPerHour(v float64) Quantity[VolumeFlowRate]

func CubicInchesPerMinute

func CubicInchesPerMinute(v float64) Quantity[VolumeFlowRate]

func CubicInchesPerSecond

func CubicInchesPerSecond(v float64) Quantity[VolumeFlowRate]

func CubicKilometers

func CubicKilometers(v float64) Quantity[Volume]

func CubicKilometersPerSecond

func CubicKilometersPerSecond(v float64) Quantity[VolumeFlowRate]

func CubicMeters

func CubicMeters(v float64) Quantity[Volume]

func CubicMetersPerHour

func CubicMetersPerHour(v float64) Quantity[VolumeFlowRate]

func CubicMetersPerMinute

func CubicMetersPerMinute(v float64) Quantity[VolumeFlowRate]

func CubicMetersPerSecond

func CubicMetersPerSecond(v float64) Quantity[VolumeFlowRate]

func CubicMillimeters

func CubicMillimeters(v float64) Quantity[Volume]

Volume constructors.

func CubicMillimetersPerSecond

func CubicMillimetersPerSecond(v float64) Quantity[VolumeFlowRate]

Volume flow rate constructors.

func CubicYards

func CubicYards(v float64) Quantity[Volume]

func CubicYardsPerHour

func CubicYardsPerHour(v float64) Quantity[VolumeFlowRate]

func CubicYardsPerMinute

func CubicYardsPerMinute(v float64) Quantity[VolumeFlowRate]

func CubicYardsPerSecond

func CubicYardsPerSecond(v float64) Quantity[VolumeFlowRate]

func Cups

func Cups(v float64) Quantity[Volume]

func CupsPerSecond

func CupsPerSecond(v float64) Quantity[VolumeFlowRate]

func Days

func Days(v float64) Quantity[Time]

func Decades added in v1.0.1

func Decades(v float64) Quantity[Time]

func DecilitersPerSecond

func DecilitersPerSecond(v float64) Quantity[VolumeFlowRate]

func Degrees

func Degrees(v float64) Quantity[Angle]

Angle constructors.

func DegreesCelsius

func DegreesCelsius(v float64) Quantity[Temperature]

Temperature constructors.

func DegreesFahrenheit

func DegreesFahrenheit(v float64) Quantity[Temperature]

func DegreesPerSecond

func DegreesPerSecond(v float64) Quantity[Frequency]

func DegreesRankine

func DegreesRankine(v float64) Quantity[Temperature]

func DozenDozens

func DozenDozens(v float64) Quantity[Pieces]

func Dozens

func Dozens(v float64) Quantity[Pieces]

func Fathoms

func Fathoms(v float64) Quantity[Length]

func Feet

func Feet(v float64) Quantity[Length]

func FeetPerSecond

func FeetPerSecond(v float64) Quantity[Speed]

func FluidOunces

func FluidOunces(v float64) Quantity[Volume]

func FluidOuncesPerHour

func FluidOuncesPerHour(v float64) Quantity[VolumeFlowRate]

func FluidOuncesPerMinute

func FluidOuncesPerMinute(v float64) Quantity[VolumeFlowRate]

func FluidOuncesPerSecond

func FluidOuncesPerSecond(v float64) Quantity[VolumeFlowRate]

func FootCandles

func FootCandles(v float64) Quantity[Illuminance]

func FootPoundForcePerSeconds

func FootPoundForcePerSeconds(v float64) Quantity[Power]

func GForces

func GForces(v float64) Quantity[Acceleration]

func Gallons

func Gallons(v float64) Quantity[Volume]

func GallonsPerHour

func GallonsPerHour(v float64) Quantity[VolumeFlowRate]

func GallonsPerMinute

func GallonsPerMinute(v float64) Quantity[VolumeFlowRate]

func GallonsPerSecond

func GallonsPerSecond(v float64) Quantity[VolumeFlowRate]

func Gibibytes

func Gibibytes(v float64) Quantity[Digital]

func GigaVoltAmpereReactiveHours

func GigaVoltAmpereReactiveHours(v float64) Quantity[ReactiveEnergy]

func GigaVoltAmpereReactives

func GigaVoltAmpereReactives(v float64) Quantity[ReactivePower]

func GigaVoltAmperes

func GigaVoltAmperes(v float64) Quantity[ApparentPower]

func Gigabits

func Gigabits(v float64) Quantity[Digital]

func Gigabytes

func Gigabytes(v float64) Quantity[Digital]

func Gigahertzes

func Gigahertzes(v float64) Quantity[Frequency]

func Gigajoules

func Gigajoules(v float64) Quantity[Energy]

func Gigaliters

func Gigaliters(v float64) Quantity[Volume]

func GigawattHours

func GigawattHours(v float64) Quantity[Energy]

func Gigawatts

func Gigawatts(v float64) Quantity[Power]

func Gradians

func Gradians(v float64) Quantity[Angle]

func Grams

func Grams(v float64) Quantity[Mass]

func GreatGrosses

func GreatGrosses(v float64) Quantity[Pieces]

func Grosses

func Grosses(v float64) Quantity[Pieces]

func HalfDozens

func HalfDozens(v float64) Quantity[Pieces]

func Hectares

func Hectares(v float64) Quantity[Area]

func Hectopascals

func Hectopascals(v float64) Quantity[Pressure]

func Hertzes

func Hertzes(v float64) Quantity[Frequency]

Frequency constructors.

func HorsepowerValues

func HorsepowerValues(v float64) Quantity[Power]

func Hours

func Hours(v float64) Quantity[Time]

func Inches

func Inches(v float64) Quantity[Length]

func InchesPerHour

func InchesPerHour(v float64) Quantity[Speed]

func Joules

func Joules(v float64) Quantity[Energy]

func KSIs

func KSIs(v float64) Quantity[Pressure]

func Kelvins

func Kelvins(v float64) Quantity[Temperature]

func Kibibytes

func Kibibytes(v float64) Quantity[Digital]

func KiloVoltAmpereReactiveHours

func KiloVoltAmpereReactiveHours(v float64) Quantity[ReactiveEnergy]

func KiloVoltAmpereReactives

func KiloVoltAmpereReactives(v float64) Quantity[ReactivePower]

func KiloVoltAmperes

func KiloVoltAmperes(v float64) Quantity[ApparentPower]

func Kiloamperes

func Kiloamperes(v float64) Quantity[Current]

func Kilobits

func Kilobits(v float64) Quantity[Digital]

func Kilobytes

func Kilobytes(v float64) Quantity[Digital]

func Kilograms

func Kilograms(v float64) Quantity[Mass]

func KilogramsForce

func KilogramsForce(v float64) Quantity[Force]

func Kilohertzes

func Kilohertzes(v float64) Quantity[Frequency]

func Kilojoules

func Kilojoules(v float64) Quantity[Energy]

func Kiloliters

func Kiloliters(v float64) Quantity[Volume]

func KilolitersPerHour

func KilolitersPerHour(v float64) Quantity[VolumeFlowRate]

func KilolitersPerMinute

func KilolitersPerMinute(v float64) Quantity[VolumeFlowRate]

func KilolitersPerSecond

func KilolitersPerSecond(v float64) Quantity[VolumeFlowRate]

func Kilometers

func Kilometers(v float64) Quantity[Length]

func KilometersPerHour

func KilometersPerHour(v float64) Quantity[Speed]

func Kilonewtons

func Kilonewtons(v float64) Quantity[Force]

func Kilopascals

func Kilopascals(v float64) Quantity[Pressure]

func Kilovolts

func Kilovolts(v float64) Quantity[Voltage]

func KilowattHours

func KilowattHours(v float64) Quantity[Energy]

func Kilowatts

func Kilowatts(v float64) Quantity[Power]

func Knots

func Knots(v float64) Quantity[Speed]

func Liters

func Liters(v float64) Quantity[Volume]

func LitersPerHour

func LitersPerHour(v float64) Quantity[VolumeFlowRate]

func LitersPerMinute

func LitersPerMinute(v float64) Quantity[VolumeFlowRate]

func LitersPerSecond

func LitersPerSecond(v float64) Quantity[VolumeFlowRate]

func LongHundreds

func LongHundreds(v float64) Quantity[Pieces]

func Luxes

func Luxes(v float64) Quantity[Illuminance]

Illuminance constructors.

func Mebibytes

func Mebibytes(v float64) Quantity[Digital]

func MegaVoltAmpereReactiveHours

func MegaVoltAmpereReactiveHours(v float64) Quantity[ReactiveEnergy]

func MegaVoltAmpereReactives

func MegaVoltAmpereReactives(v float64) Quantity[ReactivePower]

func MegaVoltAmperes

func MegaVoltAmperes(v float64) Quantity[ApparentPower]

func Megabits

func Megabits(v float64) Quantity[Digital]

func Megabytes

func Megabytes(v float64) Quantity[Digital]

func Megahertzes

func Megahertzes(v float64) Quantity[Frequency]

func Megajoules

func Megajoules(v float64) Quantity[Energy]

func Megaliters

func Megaliters(v float64) Quantity[Volume]

func Megapascals

func Megapascals(v float64) Quantity[Pressure]

func MegawattHours

func MegawattHours(v float64) Quantity[Energy]

func Megawatts

func Megawatts(v float64) Quantity[Power]

func MeterPerHours

func MeterPerHours(v float64) Quantity[Speed]

func Meters

func Meters(v float64) Quantity[Length]

func MetersOfWater

func MetersOfWater(v float64) Quantity[Pressure]

func MetersPerSecond

func MetersPerSecond(v float64) Quantity[Speed]

Speed constructors.

func MetersPerSecondSquared

func MetersPerSecondSquared(v float64) Quantity[Acceleration]

Acceleration constructors.

func MetricHorsepowerValues

func MetricHorsepowerValues(v float64) Quantity[Power]

func MetricTons

func MetricTons(v float64) Quantity[Mass]

func Microcoulombs

func Microcoulombs(v float64) Quantity[Charge]

func Micrograms

func Micrograms(v float64) Quantity[Mass]

Mass constructors.

func Micrometers

func Micrometers(v float64) Quantity[Length]

func Microseconds

func Microseconds(v float64) Quantity[Time]

func MicrosiemensPerCentimeters added in v1.0.1

func MicrosiemensPerCentimeters(v float64) Quantity[ElectricalConductivity]

func MicrosiemensPerMeters added in v1.0.1

func MicrosiemensPerMeters(v float64) Quantity[ElectricalConductivity]

func Miles

func Miles(v float64) Quantity[Length]

func MilesPerHour

func MilesPerHour(v float64) Quantity[Speed]

func MilliVoltAmpereReactiveHours

func MilliVoltAmpereReactiveHours(v float64) Quantity[ReactiveEnergy]

func MilliVoltAmpereReactives

func MilliVoltAmpereReactives(v float64) Quantity[ReactivePower]

func MilliVoltAmperes

func MilliVoltAmperes(v float64) Quantity[ApparentPower]

func Milliamperes

func Milliamperes(v float64) Quantity[Current]

func Millicoulombs

func Millicoulombs(v float64) Quantity[Charge]

func Milligrams

func Milligrams(v float64) Quantity[Mass]

func Millihertzes

func Millihertzes(v float64) Quantity[Frequency]

func Milliliters

func Milliliters(v float64) Quantity[Volume]

func MillilitersPerSecond

func MillilitersPerSecond(v float64) Quantity[VolumeFlowRate]

func Millimeters

func Millimeters(v float64) Quantity[Length]

func MillimetersOfMercury

func MillimetersOfMercury(v float64) Quantity[Pressure]

func MillimetersPerHour

func MillimetersPerHour(v float64) Quantity[Speed]

func Milliseconds

func Milliseconds(v float64) Quantity[Time]

func MillisiemensPerCentimeters added in v1.0.1

func MillisiemensPerCentimeters(v float64) Quantity[ElectricalConductivity]

func MillisiemensPerMeters added in v1.0.1

func MillisiemensPerMeters(v float64) Quantity[ElectricalConductivity]

func Millivolts

func Millivolts(v float64) Quantity[Voltage]

func MilliwattHours

func MilliwattHours(v float64) Quantity[Energy]

func Milliwatts

func Milliwatts(v float64) Quantity[Power]

func Minutes

func Minutes(v float64) Quantity[Time]

func MinutesPerKilometer

func MinutesPerKilometer(v float64) Quantity[Pace]

func MinutesPerMile

func MinutesPerMile(v float64) Quantity[Pace]

func Months

func Months(v float64) Quantity[Time]

func Nanocoulombs

func Nanocoulombs(v float64) Quantity[Charge]

func Nanometers

func Nanometers(v float64) Quantity[Length]

Length constructors.

func Nanoseconds

func Nanoseconds(v float64) Quantity[Time]

Time constructors.

func NauticalMiles

func NauticalMiles(v float64) Quantity[Length]

func New

func New[D any, U Unit[D]](v float64, u U) Quantity[D]

New constructs a quantity from a value expressed in the provided unit.

func NewtonMeters

func NewtonMeters(v float64) Quantity[Torque]

Torque constructors.

func Newtons

func Newtons(v float64) Quantity[Force]

Force constructors.

func Ounces

func Ounces(v float64) Quantity[Mass]

func PHValue added in v1.0.1

func PHValue(v float64) Quantity[Acidity]

Acidity constructors.

func POHValue added in v1.0.1

func POHValue(v float64) Quantity[Acidity]

func PSIs

func PSIs(v float64) Quantity[Pressure]

func PartsPerBillion

func PartsPerBillion(v float64) Quantity[PartsPer]

func PartsPerMillion

func PartsPerMillion(v float64) Quantity[PartsPer]

Parts-per constructors.

func PartsPerQuadrillion

func PartsPerQuadrillion(v float64) Quantity[PartsPer]

func PartsPerTrillion

func PartsPerTrillion(v float64) Quantity[PartsPer]

func Pascals

func Pascals(v float64) Quantity[Pressure]

Pressure constructors.

func Petabytes added in v1.0.1

func Petabytes(v float64) Quantity[Digital]

func Picocoulombs

func Picocoulombs(v float64) Quantity[Charge]

func PiecesCount

func PiecesCount(v float64) Quantity[Pieces]

Pieces constructors.

func Pints

func Pints(v float64) Quantity[Volume]

func PintsPerHour

func PintsPerHour(v float64) Quantity[VolumeFlowRate]

func PintsPerMinute

func PintsPerMinute(v float64) Quantity[VolumeFlowRate]

func PintsPerSecond

func PintsPerSecond(v float64) Quantity[VolumeFlowRate]

func PoundForceFeet

func PoundForceFeet(v float64) Quantity[Torque]

func Pounds

func Pounds(v float64) Quantity[Mass]

func PoundsForce

func PoundsForce(v float64) Quantity[Force]

func Quarts

func Quarts(v float64) Quantity[Volume]

func QuartsPerSecond

func QuartsPerSecond(v float64) Quantity[VolumeFlowRate]

func Radians

func Radians(v float64) Quantity[Angle]

func RadiansPerSecond

func RadiansPerSecond(v float64) Quantity[Frequency]

func Reams

func Reams(v float64) Quantity[Pieces]

func RevolutionsPerMinute

func RevolutionsPerMinute(v float64) Quantity[Frequency]

func Scores

func Scores(v float64) Quantity[Pieces]

func Seconds

func Seconds(v float64) Quantity[Time]

func SecondsPerFoot

func SecondsPerFoot(v float64) Quantity[Pace]

func SecondsPerMeter

func SecondsPerMeter(v float64) Quantity[Pace]

Pace constructors.

func SiemensPerCentimeters added in v1.0.1

func SiemensPerCentimeters(v float64) Quantity[ElectricalConductivity]

func SiemensPerMeters added in v1.0.1

func SiemensPerMeters(v float64) Quantity[ElectricalConductivity]

Electrical conductivity constructors.

func SmallGrosses

func SmallGrosses(v float64) Quantity[Pieces]

func SquareCentimeters

func SquareCentimeters(v float64) Quantity[Area]

func SquareFeet

func SquareFeet(v float64) Quantity[Area]

func SquareInches

func SquareInches(v float64) Quantity[Area]

func SquareKilometers

func SquareKilometers(v float64) Quantity[Area]

func SquareMeters

func SquareMeters(v float64) Quantity[Area]

func SquareMiles

func SquareMiles(v float64) Quantity[Area]

func SquareMillimeters

func SquareMillimeters(v float64) Quantity[Area]

Area constructors.

func StandardGravities

func StandardGravities(v float64) Quantity[Acceleration]

func Stones

func Stones(v float64) Quantity[Mass]

func Tablespoons

func Tablespoons(v float64) Quantity[Volume]

func TablespoonsPerSecond

func TablespoonsPerSecond(v float64) Quantity[VolumeFlowRate]

func Teaspoons

func Teaspoons(v float64) Quantity[Volume]

func TeaspoonsPerSecond

func TeaspoonsPerSecond(v float64) Quantity[VolumeFlowRate]

func Tebibytes

func Tebibytes(v float64) Quantity[Digital]

func Terabits

func Terabits(v float64) Quantity[Digital]

func Terabytes

func Terabytes(v float64) Quantity[Digital]

func Terahertzes

func Terahertzes(v float64) Quantity[Frequency]

func Tonnes

func Tonnes(v float64) Quantity[Mass]

func Torrs

func Torrs(v float64) Quantity[Pressure]

func Trios

func Trios(v float64) Quantity[Pieces]

func USFeet

func USFeet(v float64) Quantity[Length]

func VoltAmpereReactiveHours

func VoltAmpereReactiveHours(v float64) Quantity[ReactiveEnergy]

func VoltAmpereReactives

func VoltAmpereReactives(v float64) Quantity[ReactivePower]

func VoltAmperes

func VoltAmperes(v float64) Quantity[ApparentPower]

func Volts

func Volts(v float64) Quantity[Voltage]

Electrical constructors.

func WattHours

func WattHours(v float64) Quantity[Energy]

func WattMinutes

func WattMinutes(v float64) Quantity[Energy]

func WattSeconds

func WattSeconds(v float64) Quantity[Energy]

Energy constructors.

func Watts

func Watts(v float64) Quantity[Power]

func Weeks

func Weeks(v float64) Quantity[Time]

func Yards

func Yards(v float64) Quantity[Length]

func Years

func Years(v float64) Quantity[Time]

func (Quantity[D]) Add

func (q Quantity[D]) Add(other Quantity[D]) Quantity[D]

Add adds two quantities of the same dimension.

func (Quantity[Length]) Div

func (q Quantity[Length]) Div(other Quantity[Time]) Quantity[Speed]

Div divides a length quantity by a time quantity and returns speed.

func (Quantity[Speed]) DivSpeed

func (q Quantity[Speed]) DivSpeed(other Quantity[Time]) Quantity[Acceleration]

DivSpeed divides a speed quantity by a time quantity and returns acceleration.

func (Quantity[D]) Format

func (q Quantity[D]) Format(u Unit[D]) string

Format formats the quantity in the provided unit.

func (Quantity[D]) MarshalJSON

func (q Quantity[D]) MarshalJSON() ([]byte, error)

MarshalJSON encodes the quantity as its scalar value in the base unit for the dimension.

func (Quantity[D]) MarshalText

func (q Quantity[D]) MarshalText() ([]byte, error)

MarshalText encodes the quantity as a base-unit scalar value.

func (Quantity[D]) String

func (q Quantity[D]) String() string

String formats the quantity in the base unit for its dimension.

func (Quantity[D]) Sub

func (q Quantity[D]) Sub(other Quantity[D]) Quantity[D]

Sub subtracts another quantity of the same dimension.

func (Quantity[D]) To

func (q Quantity[D]) To(u Unit[D]) float64

To converts the quantity to the provided unit and returns the scalar value.

func (*Quantity[D]) UnmarshalJSON

func (q *Quantity[D]) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes a quantity from a scalar value in the base unit for the dimension.

func (*Quantity[D]) UnmarshalText

func (q *Quantity[D]) UnmarshalText(text []byte) error

UnmarshalText decodes a base-unit scalar value into the quantity.

func (Quantity[D]) Value

func (q Quantity[D]) Value(u Unit[D]) float64

Value converts the quantity to the provided unit and returns the scalar value.

type ReactiveEnergy

type ReactiveEnergy struct{}

ReactiveEnergy is the dimension marker for reactive energy quantities.

type ReactivePower

type ReactivePower struct{}

ReactivePower is the dimension marker for reactive power quantities.

type SQLQuantity

type SQLQuantity[D any] struct {
	Quantity[D]
}

SQLQuantity wraps a quantity for database/sql interop using base-unit scalar values.

func SQL

func SQL[D any](q Quantity[D]) SQLQuantity[D]

SQL wraps a quantity in a database-friendly adapter.

func (*SQLQuantity[D]) Scan

func (q *SQLQuantity[D]) Scan(src any) error

Scan implements database/sql.Scanner using a base-unit scalar value.

func (SQLQuantity[D]) Value

func (q SQLQuantity[D]) Value() (driver.Value, error)

Value implements database/sql/driver.Valuer using the base-unit scalar value.

type Speed

type Speed = Div[Length, Time]

Speed is the derived dimension for length divided by time.

type Temperature

type Temperature struct{}

Temperature is the dimension marker for temperature quantities.

type Time

type Time struct{}

Time is the dimension marker for time quantities.

type Torque

type Torque struct{}

Torque is the dimension marker for torque quantities.

type Unit

type Unit[D any] interface {
	// contains filtered or unexported methods
}

Unit converts values between a unit and the base unit for a dimension.

Implementations should be small value types so conversions stay allocation-free and inline well.

type Voltage

type Voltage struct{}

Voltage is the dimension marker for electrical potential quantities.

type Volume

type Volume struct{}

Volume is the dimension marker for volume quantities.

type VolumeFlowRate

type VolumeFlowRate struct{}

VolumeFlowRate is the dimension marker for volumetric flow rate quantities.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL