# Density Altitude on HP48

Posted on October 15, 2019. Tagged as: hp48

For checking the performance calculation of my electronic flight book application of choice, I have implemented a little program for calculating the density altitude on an HP48 calculator. Here are the steps to derive the formula. This is posted an example only without any guarantees of correctness, so don’t rely on this. Especially these equations and programs don’t consider humidity.

## Equations

First step is to calculate the density at the given altitude, using pressure reduced to sea level (QNH or p0), and altitude h as inputs: The equations use the following constants: Next step is to apply temperature correction to the density with ΔISA as input to get the temperature corrected density ρ2: The calculated density can then be converted back to a virtual altitude at international standard athmosphere (ISA) conditions, aka density altitude: If you fill in the some example numbers (e.g. 0 ft, QNH 1013.25 hPA, ΔISA 1 K), you will get an increase in density altitude per ΔISA of about 118 ft per ΔISA for small positive ΔISA. This closely matches the rule of thumb of 120 ft per ΔISA.

## RPL Program for HP48 using ΔISA

``````%%HP: T(3)A(R)F(.);
@ calculate density altitude with delta ISA:
\<<
"DENSITY ALTITUDE"
{
{ "ALTITUDE   " "ALTITUDE IN FT             " 0  }
{ "QNH        " "QNH IN HPA                 " 0  }
{ "DELTA ISA  " "TEMPERATURE DIFFERENCE IN K" 0  }
}
1
{ 0 1013.25 0 }
{ 0 1013.25 0 }
IF INFORM THEN
OBJ\-> DROP
3 PICK
3 PICK
3 PICK
\-> alt qnh isa
\<<
alt 0.3048 *
-9.80665 287.05 -0.0065 * /
1 -
qnh 100 * 287.05 288.15 * /
\-> h k1 rho0
\<<
rho0
1 -0.0065 h * 288.15 / +
k1 ^
*
\-> rho1
\<<
288.15 -0.0065 h * +
288.15 -0.0065 h * + isa + /
rho1 *

1
9.80665 287.05 -0.0065 * /
1 +
/

\-> rho2 k2
\<<
288.15
288.15
rho2 1.225 /
k2 ^
*

-
-0.0065
rho2 1.225 /
k2 ^
*

/

0.3048
/
\>>
\>>
\>>
\>>
END
\>>``````

## RPL Program for HP48 using tempature in °C

``````%%HP: T(3)A(R)F(.);
@ calculate density altitude with absolute temperature
\<<
"DENSITY ALTITUDE"
{
{ "ALTITUDE   " "ALTITUDE IN FT  " 0  }
{ "QNH        " "QNH IN HPA      " 0  }
{ "TEMPERATURE" "TEMPERATURE IN C" 0  }
}
1
{ 0 1013.25 15 }
{ 0 1013.25 15 }
IF INFORM THEN
OBJ\-> DROP
3 PICK
3 PICK
3 PICK
\-> alt qnh tmp
\<<
alt 0.3048 *
-9.80665 287.05 -0.0065 * /
1 -
qnh 100 * 287.05 288.15 * /
\-> h k1 rho0
\<<
rho0
1 -0.0065 h * 288.15 / +
k1 ^
*
\-> rho1
\<<
288.15 -0.0065 h * +
273.15 tmp + /
rho1 *

1
9.80665 287.05 -0.0065 * /
1 +
/

\-> rho2 k2
\<<
288.15
288.15
rho2 1.225 /
k2 ^
*

-
-0.0065
rho2 1.225 /
k2 ^
*

/

0.3048
/
\>>
\>>
\>>
\>>
END
\>>``````