Contributor: GAYLE DAVIS { MATH Unit for various conversions } {$DEFINE Use8087} { define this for EXTENDED 8087 floating point math } UNIT MATH; {$IFDEF Use8087} {$N+} {$ELSE {$N-} {$ENDIF} INTERFACE TYPE {$IFDEF Use8087} FLOAT = EXTENDED; {$ELSE} FLOAT = REAL; {$ENDIF} FUNCTION FahrToCent(FahrTemp: FLOAT): FLOAT; FUNCTION CentToFahr(CentTemp: FLOAT): FLOAT; FUNCTION KelvToCent(KelvTemp: FLOAT): FLOAT; FUNCTION CentToKelv(CentTemp: FLOAT): FLOAT; PROCEDURE InchToFtIn(Inches: FLOAT; VAR ft,ins: FLOAT); FUNCTION FtInToInch(ft,ins: FLOAT): FLOAT; FUNCTION InchToYard(Inches: FLOAT): FLOAT; FUNCTION YardToInch(Yards: FLOAT): FLOAT; FUNCTION InchToMile(Inches: FLOAT): FLOAT; FUNCTION MileToInch(Miles: FLOAT): FLOAT; FUNCTION InchToNautMile(Inches: FLOAT): FLOAT; FUNCTION NautMileToInch(NautMiles: FLOAT): FLOAT; FUNCTION InchToMeter(Inches: FLOAT): FLOAT; FUNCTION MeterToInch(Meters: FLOAT): FLOAT; FUNCTION SqInchToSqFeet(SqInches: FLOAT): FLOAT; FUNCTION SqFeetToSqInch(SqFeet: FLOAT): FLOAT; FUNCTION SqInchToSqYard(SqInches: FLOAT): FLOAT; FUNCTION SqYardToSqInch(SqYards: FLOAT): FLOAT; FUNCTION SqInchToSqMile(SqInches: FLOAT): FLOAT; FUNCTION SqMileToSqInch(SqMiles: FLOAT): FLOAT; FUNCTION SqInchToAcre(SqInches: FLOAT): FLOAT; FUNCTION AcreToSqInch(Acres: FLOAT): FLOAT; FUNCTION SqInchToSqMeter(SqInches: FLOAT): FLOAT; FUNCTION SqMeterToSqInch(SqMeters: FLOAT): FLOAT; FUNCTION CuInchToCuFeet(CuInches: FLOAT): FLOAT; FUNCTION CuFeetToCuInch(CuFeet: FLOAT): FLOAT; FUNCTION CuInchToCuYard(CuInches: FLOAT): FLOAT; FUNCTION CuYardToCuInch(CuYards: FLOAT): FLOAT; FUNCTION CuInchToCuMeter(CuInches: FLOAT): FLOAT; FUNCTION CuMeterToCuInch(CuMeters: FLOAT): FLOAT; FUNCTION FluidOzToPint(FluidOz: FLOAT): FLOAT; FUNCTION PintToFluidOz(Pints: FLOAT): FLOAT; FUNCTION FluidOzToImpPint(FluidOz: FLOAT): FLOAT; FUNCTION ImpPintToFluidOz(ImpPints: FLOAT): FLOAT; FUNCTION FluidOzToGals(FluidOz: FLOAT): FLOAT; FUNCTION GalsToFluidOz(Gals: FLOAT): FLOAT; FUNCTION FluidOzToImpGals(FluidOz: FLOAT): FLOAT; FUNCTION ImpGalsToFluidOz(ImpGals: FLOAT): FLOAT; FUNCTION FluidOzToCuMeter(FluidOz: FLOAT): FLOAT; FUNCTION CuMeterToFluidOz(CuMeters: FLOAT): FLOAT; PROCEDURE OunceToLbOz(Ounces: FLOAT; VAR lb,oz: FLOAT); FUNCTION LbOzToOunce(lb,oz: FLOAT): FLOAT; FUNCTION OunceToTon(Ounces: FLOAT): FLOAT; FUNCTION TonToOunce(Tons: FLOAT): FLOAT; FUNCTION OunceToLongTon(Ounces: FLOAT): FLOAT; FUNCTION LongTonToOunce(LongTons: FLOAT): FLOAT; FUNCTION OunceToGram(Ounces: FLOAT): FLOAT; FUNCTION GramToOunce(Grams: FLOAT): FLOAT; IMPLEMENTATION { Temperature conversion } FUNCTION FahrToCent(FahrTemp: FLOAT): FLOAT; BEGIN FahrToCent:=(FahrTemp+40.0)*(5.0/9.0)-40.0; END; FUNCTION CentToFahr(CentTemp: FLOAT): FLOAT; BEGIN CentToFahr:=(CentTemp+40.0)*(9.0/5.0)-40.0; END; FUNCTION KelvToCent(KelvTemp: FLOAT): FLOAT; BEGIN KelvToCent:=KelvTemp-273.16; END; FUNCTION CentToKelv(CentTemp: FLOAT): FLOAT; BEGIN CentToKelv:=CentTemp+273.16; END; { Linear measurement conversion } PROCEDURE InchToFtIn(Inches: FLOAT; VAR ft,ins: FLOAT); BEGIN ft:=INT(Inches/12.0); ins:=Inches-ft*12.0; END; FUNCTION FtInToInch(ft,ins: FLOAT): FLOAT; BEGIN FtInToInch:=ft*12.0+ins; END; FUNCTION InchToYard(Inches: FLOAT): FLOAT; BEGIN InchToYard:=Inches/36.0; END; FUNCTION YardToInch(Yards: FLOAT): FLOAT; BEGIN YardToInch:=Yards*36.0; END; FUNCTION InchToMile(Inches: FLOAT): FLOAT; BEGIN InchToMile:=Inches/63360.0; END; FUNCTION MileToInch(Miles: FLOAT): FLOAT; BEGIN MileToInch:=Miles*63360.0; END; FUNCTION InchToNautMile(Inches: FLOAT): FLOAT; BEGIN InchToNautMile:=Inches/72960.0; END; FUNCTION NautMileToInch(NautMiles: FLOAT): FLOAT; BEGIN NautMileToInch:=NautMiles*72960.0; END; FUNCTION InchToMeter(Inches: FLOAT): FLOAT; BEGIN InchToMeter:=Inches*0.0254; END; FUNCTION MeterToInch(Meters: FLOAT): FLOAT; BEGIN MeterToInch:=Meters/0.0254; END; { Area conversion } FUNCTION SqInchToSqFeet(SqInches: FLOAT): FLOAT; BEGIN SqInchToSqFeet:=SqInches/144.0; END; FUNCTION SqFeetToSqInch(SqFeet: FLOAT): FLOAT; BEGIN SqFeetToSqInch:=SqFeet*144.0; END; FUNCTION SqInchToSqYard(SqInches: FLOAT): FLOAT; BEGIN SqInchToSqYard:=SqInches/1296.0; END; FUNCTION SqYardToSqInch(SqYards: FLOAT): FLOAT; BEGIN SqYardToSqInch:=SqYards*1296.0; END; FUNCTION SqInchToSqMile(SqInches: FLOAT): FLOAT; BEGIN SqInchToSqMile:=SqInches/4.0144896E9; END; FUNCTION SqMileToSqInch(SqMiles: FLOAT): FLOAT; BEGIN SqMileToSqInch:=SqMiles*4.0144896E9; END; FUNCTION SqInchToAcre(SqInches: FLOAT): FLOAT; BEGIN SqInchToAcre:=SqInches/6272640.0; END; FUNCTION AcreToSqInch(Acres: FLOAT): FLOAT; BEGIN AcreToSqInch:=Acres*6272640.0; END; FUNCTION SqInchToSqMeter(SqInches: FLOAT): FLOAT; BEGIN SqInchToSqMeter:=SqInches/1550.016; END; FUNCTION SqMeterToSqInch(SqMeters: FLOAT): FLOAT; BEGIN SqMeterToSqInch:=SqMeters*1550.016; END; { Volume conversion } FUNCTION CuInchToCuFeet(CuInches: FLOAT): FLOAT; BEGIN CuInchToCuFeet:=CuInches/1728.0; END; FUNCTION CuFeetToCuInch(CuFeet: FLOAT): FLOAT; BEGIN CuFeetToCuInch:=CuFeet*1728.0; END; FUNCTION CuInchToCuYard(CuInches: FLOAT): FLOAT; BEGIN CuInchToCuYard:=CuInches/46656.0; END; FUNCTION CuYardToCuInch(CuYards: FLOAT): FLOAT; BEGIN CuYardToCuInch:=CuYards*46656.0; END; FUNCTION CuInchToCuMeter(CuInches: FLOAT): FLOAT; BEGIN CuInchToCuMeter:=CuInches/61022.592; END; FUNCTION CuMeterToCuInch(CuMeters: FLOAT): FLOAT; BEGIN CuMeterToCuInch:=CuMeters*61022.592; END; { Liquid measurement conversion } FUNCTION FluidOzToPint(FluidOz: FLOAT): FLOAT; BEGIN FluidOzToPint:=FluidOz/16.0; END; FUNCTION PintToFluidOz(Pints: FLOAT): FLOAT; BEGIN PintToFluidOz:=Pints*16.0; END; FUNCTION FluidOzToImpPint(FluidOz: FLOAT): FLOAT; BEGIN FluidOzToImpPint:=FluidOz/20.0; END; FUNCTION ImpPintToFluidOz(ImpPints: FLOAT): FLOAT; BEGIN ImpPintToFluidOz:=ImpPints*20.0; END; FUNCTION FluidOzToGals(FluidOz: FLOAT): FLOAT; BEGIN FluidOzToGals:=FluidOz/128.0; END; FUNCTION GalsToFluidOz(Gals: FLOAT): FLOAT; BEGIN GalsToFluidOz:=Gals*128.0; END; FUNCTION FluidOzToImpGals(FluidOz: FLOAT): FLOAT; BEGIN FluidOzToImpGals:=FluidOz/160.0; END; FUNCTION ImpGalsToFluidOz(ImpGals: FLOAT): FLOAT; BEGIN ImpGalsToFluidOz:=ImpGals*160.0; END; FUNCTION FluidOzToCuMeter(FluidOz: FLOAT): FLOAT; BEGIN FluidOzToCuMeter:=FluidOz/33820.0; END; FUNCTION CuMeterToFluidOz(CuMeters: FLOAT): FLOAT; BEGIN CuMeterToFluidOz:=CuMeters*33820.0; END; { Weight conversion } PROCEDURE OunceToLbOz(Ounces: FLOAT; VAR lb,oz: FLOAT); BEGIN lb:=INT(Ounces/16.0); oz:=Ounces-lb*16.0; END; FUNCTION LbOzToOunce(lb,oz: FLOAT): FLOAT; BEGIN LbOzToOunce:=lb*16.0+oz; END; FUNCTION OunceToTon(Ounces: FLOAT): FLOAT; BEGIN OunceToTon:=Ounces/32000.0; END; FUNCTION TonToOunce(Tons: FLOAT): FLOAT; BEGIN TonToOunce:=Tons*32000.0; END; FUNCTION OunceToLongTon(Ounces: FLOAT): FLOAT; BEGIN OunceToLongTon:=Ounces/35840.0; END; FUNCTION LongTonToOunce(LongTons: FLOAT): FLOAT; BEGIN LongTonToOunce:=LongTons*35840.0; END; FUNCTION OunceToGram(Ounces: FLOAT): FLOAT; BEGIN OunceToGram:=Ounces*28.35; END; FUNCTION GramToOunce(Grams: FLOAT): FLOAT; BEGIN GramToOunce:=Grams/28.35; END; END.