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.