Mathematical calculations 

udfMultiplyNumbers(Number1:Number, Number2:Number):Number = Number1 * Number2;

udfDivideNumbers(Number1:Number, Number2:Number):Number = Number1 / Number2;

udfAddNumbers(Number1:Number, Number2:Number):Number = Number1 + Number2;

udfSubtractNumbers(Number1:Number, Number2:Number):Number = Number1 - Number2;

udfCalculateVolumeOfCube(Length:Number, Width:Number, Height:Number):Number = Length * Width * Height;

udfCalculateVolumeOfSphere(PI:Number, Radius:Number):Number = 4 / 3 *PI * Radius ^ 3

udfCalculateAreaOfCircle(Radius:Number,PI:Number):Number = PI * Radius ^ 2

Water Calculations

Working as a hydro operator requires controlling the flow and storage of large volumes of water by monitoring and adjusting the amount of water travelling in water conveyances or passing through a hydraulic turbine to generate electricity.

I thought it would be handy to have functions to caluclate the flow and storage values. 

Typical units of flow meaurement include cubic feet per second (CFS), Acre-Feet per day (ACFT/Day). 

The typical unit of storage we use is Acre-Feet (ACFT).

There are several formulas to convert from flow to storage and vice-versa. I have created functions to allow the calculations to be made.  They are outlined below:

udfCalculateAcreFeetPerDayFromCFS(CFS:Number):Number = udfMultiplyNumbers(CFS, 2);

udfCalculateAcreFeetPerHourFromCFS(CFS:Number):Number = udfDivideNumbers(CFS,12.1);

udfCalculateCFSfromAcreFeetPerDay(ACFTPerDay:Number):Number = udfDivideNumbers(ACFTPerDay,2);

udfCalculateCFSfromAcreFeetPerHour(ACFTPerDay:Number):Number = udfMultiplyNumbers(ACFTPerHour,12.1);

udfCalculateUnitLoadFromCFS(CFS:Number, WaterDutyCFS:Number):Number = udfMultiplyNmbers(CFS, udfDivideNumbers(WaterDutyCFS,1000));

udfCalculateUnitLoadFromACFT(ACFT:Number, WaterDutyACFT:Number):Number = udfMultiplyNmbers(ACFT, udfDivideNumbers(WaterDutyACFT,1000));

udfCalculateFlowFromLoadCFS(WaterDutyCFS:Number, Load:Number):Number = udfMultiplyNumbers(Load, udfDivideNumbers(1000,WaterDutyCFS));

udfCalculateFlowFromLoadACFT(WaterDutyACFT:Number, Load:Number):Number = udfMultiplyNumbers(Load, udfDivideNumbers(1000,WaterDutyACFT));

udfCalculateStorageChange(StartingStorage:Number, EndingStorage:Number):Number = StartingStorage - EndingStorage;

udfCalculateAverageInflow(StartingStorage:Number, EndingStorage:Number, DailyGeneration:Number, WaterDutyACFT:Number):Number = (DailyGeneration/WaterDutyACFT)+(StartingStorage-EndingStorage);

Temperature Conversions

udfFahrenheitToCelsius(DegF:Number):Number=Round( 5 / 9 * DegF,1);

udfCelsiusToFahrenheit(DegC:Number):Number= Round((9 / 5 * DegF)+32,1);

Text Formatting

Percentage

udfPercentage(Total:Number,Achievable:Number):Text = $"{Total / Achievable *100}%";

Currency format  value to £GBP

udfCurrencyFormat(TotalValue:Number):Text = Text(TotalValue, "£#,##0.00");

Currency format  value to $US

udfCurrencyFormat(TotalValue:Number):Text = Text(TotalValue, "$#,##0.00");

Calculate Working Days Between Two Dates (tweaks on Matthew Devaney's function)

5 x 8 Work Schedule

udfNetWorkDays5-8s(StartDate:DateTime, EndDate:DateTime):Number = Sum(
    AddColumns(
        ForAll(
            Sequence(
                DateDiff(
                    StartDate,
                    EndDate,
                    TimeUnit.Days
                )+1
            ),
            StartDate + Value
        ),
        "IsWeekday",
        Weekday(Value) in [2,3,4,5,6]
    ),
    IsWeekday
);

4 x 10 Work Schedule

udfNetWorkDays4-10s(StartDate:DateTime, EndDate:DateTime):Number = Sum(
    AddColumns(
        ForAll(
            Sequence(
                DateDiff(
                    StartDate,
                    EndDate,
                    TimeUnit.Days
                )+1
            ),
            StartDate + Value
        ),
        "IsWeekday",
        Weekday(Value) in [2,3,4,5]
    ),
    IsWeekday
);

Centering Controls in a Gallery or Container:

udfGetCenteredDimension(ParentDimension:Number, ChildDimension:Number):Number = (ParentDimension - ChildDimension) / 2;

To center an item in a gallery use these formulas in the X and Y properties:

X - udfGetCenteredDimension(Parent.TemplateWidth,Self.Width).

Y - udfGetCenteredDimension(Parent.TemplateHeight,Self.Height).

To center an item in a container use these formulas in the X and Y properties:

X - udfGetCenteredDimension(Parent.Width,Self.Width).

Y - udfGetCenteredDimension(Parent.Height,Self.Height).

Other Resources for User Defined Functions

See Matthew Devaneys article here: https://www.matthewdevaney.com/power-apps-user-defined-functions-write-code-once-and-reuse/

See Chris White's article here: Power Apps User Defined Functions - Platforms of Power