I want to calculate each step like IAS -> CAS -> EAS -> TAS as a chain. Each chain step should depend on the previous step.

IAS is clear. This is a function of pressures. With the Bernoulli equation, IAS = f(p_total - p_static)

CAS is not clear. But I know that static error is taken into account, CAS = f(IAS,static error)

EAS is not clear. I know that EAS takes compressiblity effects into account.

TAS is again clear, dependent on density it is easy to calculate with TAS = f(EAS, rho, rho_0)

How to calculate EAS from CAS immediately with EAS = f(CAS)?

I know that one can calculate EAS with EAS = f(Mach, a_0), also by taking in account of the compressibility of air.

Thank you very much!


4 Answers 4


I wanted to add to the very detailed and helpful answer above to clarify some things as hopefully it might help someone. Most pilot ground studies courses approach this from the viewpoint of how to go from IAS to CAS to EAS to TAS but skip a lot of detail, which I think is what is frustrating the OP. So here's a deep dive. Also, the previous answer ends with "Solving it for EAS = f(CAS) is left to the reader". Since that's sort of what the OP was asking I thought it might be worth a crack at it, although from a different angle.

IAS (Indicated Air Speed)

This is the speed that the air speed indicator in the cockpit displays. The best way to think of the ASI it that it's a pressure gauge that measures differential pressure (pitot minus static) only it's calibrated in knots (or whatever.) As you say in your question, IAS is a function of (p_total - p_static). Is to what that function is, we'll come to that in a moment.

CAS (Calibrated Air Speed)

What the instrument should have read if the instrument and the pitot/static system were perfect. In other words, the IAS after correcting for position errors (e.g. effect of flap setting on pitot/static system) and instrument errors. CAS can be derived from IAS by using look-up tables but these are aicraft-specific. In modern systems, this is done automatically by the Air Data Computer, so the ASI will directly read CAS. In other words, CAS = f(IAS, hardware errors, Mach, AoA, flap setting, ...) To find out this function, you have to do computational fluid dynamics, wind tunnel testing, flight testing or all three. So it's non-trivial. I can't just give you an equation for it. The good news is, in straight and level flight, the errors aren't usually very big.

EAS (Equivalent Air Speed)

This is where things get weird and annoying. Many aviation courses and textbooks treat EAS as a "stepping stone" to TAS but it's almost never used that way in reality and these sources never tell you how to calculate EAS from CAS. It's usually easier to go straight to TAS from CAS, e.g. using a CRP-5 flight computer (a kind of circular slide rule) or by let the aircraft work it out for you via the Air Data Computer. As a pilot, you very rarely need to actually calculate EAS. CAS, TAS and Mach number are usually far more useful.

EAS is supposed to be a version of CAS corrected for "compressibility errors". This might lead you to think EAS is necessary because the ASI uses some simple non-compressible flow assumptions, which need to be corrected at higher Mach numbers. However, at sea level, EAS is the same as CAS, regardless of airspeed, by definition Wikipedia's definition. I.e. you can be in a very compressible flow regime, like Mach 0.8, and EAS is still the same as CAS. This initially makes no sense until you realise that the definition of EAS has to make an assumption about how an air speed indicator actually works.

One might think the airspeed indicator is calibrated by simply reversing the well-known formula (from Bernoulli) for static pressure, namely:

$q = \frac{1}{2}\rho v^2 $,

like this:

$v_{IAS} = \sqrt{\frac{2q}{\rho}} $,

where $\rho$ is the air density and $q$ is the dynamic (pitot minus static) pressure.

This is not so. Here's where we get to "things they don't tell you in ATPL ground exam courses." It seems that the standard definitions of EAS makes the assumption that the airspeed indicator actually works by using isentropic flow relations. This would require it to know things like the static pressure (it only senses differential) and the local speed of sound (which requires knowledge of outside air temperature.) However, it is still possible to use this approach if you "cheat" and put in sea level values for all the things the instrument doesn't know. In other words, the ASI calculates IAS according to:

$v_{IAS} = a_0 * \sqrt{5\left[\left(\frac{q}{p_0}+1\right)^{\frac{2}{7}} - 1\right]} $

Where $a_0$ is the ISA (international standard atmosphere) sea level speed of sound (340 m/s), $q$ the dynamic pressure as before (aka impact pressure) and $p_0$ is the ISA sea level pressure (101325 Pa).

Note that the magic numbers 5 and 2/7 arise because of the value of $\gamma$ (gamma), the ratio of specific heats for air, which equals 1.4. The more general form is:

$v_{IAS} = a_0 * \sqrt{\frac{2}{\gamma-1}\left[\left(\frac{q}{p_0}+1\right)^{\frac{\gamma-1}{\gamma}} - 1\right]} $

This relation is a well known thing but I don't know how to derive it. Yet. (In any case, this answer is already long enough.)

It turns out that if you take a binomial approximation of the 2/7 power and neglect second order terms and higher, you get this:

$q \approx \frac{1}{2} 1.227 v^2$

The value 1.227 being very close to the ISA sea level density of 1.225, so it is equivalent to Bernoulli for low Mach numbers. Anyway, I digress.

Calculating EAS

From here on, we'll asssume IAS=CAS. Now let us assume you want to find the EAS given only the IAS/CAS and the altitude. Normally, as a pilot, perhaps tackling an ATPL exam question, you'd use a CRP-5, but let's assume we are proper nerds and we want to code this (e.g. in python) or get a better undersanding of how an ADC (Air Data Computer) or ADIRU (Air Data Inertial Reference Unit) works.

The EAS is a function of the CAS, the dynamic pressure and the static pressure.

Finding static pressure from altitude

The static pressure can be inferred from the altitude using the International Standard Atmosphere. For the troposphere (i.e. up to 11km or 36,080ft) the pressure is calculated by solving the hydrostatic equation for a constant lapse rate. Dealing with the tropopause and above is left as an exercise for the reader :-P

$p_s = p_0 \left( \frac{T_s}{T_0}\right)^{\frac{g}{L R}} $,

where $p_s$ is the static pressure at altitude, $p_0$ is the ISA sea level pressure (101325 Pa), $T_0$ is the ISA sea level temperature (288.15K, $g$ is the acceleration due to gravity (9.81m/s2), $L$ is the lapse rate (0.0065K/m), $R$ is the specific gas constant for air (287 J/K/Kg) and $T_s$ is the static temperature at altitude:

$T_s = T_0 - L h$,

were $h$ is the altitude in metres.

Finding the dynamic pressure from CAS

Note that the ASI does not tell you (the pilot) the dynamic pressure directly, it only tells you it in terms of the IAS/CAS. So we have to "reverse" the formula above:

$q = \left[\frac{\left(\frac{v_{CAS}}{a_0}\right)^2}{5} + 1\right]^\frac{7}{2} - 1$

Finding the Mach number

Next we need to find the Mach number. Note that this is a very similar equation to how the ASI calculates airspeed, but this time we use the real static pressure, not the sea-level value:

$M = \sqrt{5\left[\left(\frac{q}{p_s}+1\right)^{\frac{2}{7}} - 1\right]} $

The EAS is then defined as:

$v_{EAS} = a_0 M \sqrt{\frac{p_s}{p_0}} $

In other words, EAS uses the real Mach number but the sea level speed of sound to obtain a speed, and then multiplies this by the root of the pressure ratio. Putting this all together:

$v_{EAS} = a_0 \sqrt{5\left[\left(\frac{q}{p_s}+1\right)^{\frac{2}{7}} - 1\right]} \sqrt{\frac{p_s}{p_0}} $



TAS can be obtained from EAS, which in effect gives another formal definition of EAS:

$v_{TAS} = v_{EAS} \sqrt{\frac{\rho_0}{\rho}} $,

where $\rho$ (rho) is the actual air density at altitude (which can be calculated from temperature and pressure using the ideal gas law ($\rho = \frac{p_s}{R T_s}$) and $\rho_0$ is the ISA sea level density (1.225 kg/m3.) In other words, TAS is just the EAS divided by the root of the density ratio.

However, it's actually easier just to calculate TAS directly, which saves knowing about densities:

$v_{TAS} = a M $

where $M$ is the Mach number as calcuated above and $a$ is the local speed of sound (not the sea level value like the in the EAS formula,) which can be calculated from $a = \sqrt{\gamma R T_s}$.

#!/usr/bin/env python3
# Calculate EAS and TAS, given CAS and a pressure altitude
# Warning: only works in troposphere, i.e. below 11km
# By Halzephron 2020

from math import pi, sqrt
import sys

ms_per_kt = 0.51444
feet_per_metre = 3.28
T_0C = 273.15 # 0 degrees C in Kelvin

# Some useful constants

g=9.81          # Acceleration due to gravity
R=287           # Specific gas constant for air
L=0.0065        # Lapse rate in K/m
T0 = 288.15     # ISA sea level temp in K
p0 = 101325     # ISA sea level pressure in Pa
k = 1.4         # k is a shorthand for Gamma, the ratio of specific heats for air
lss0 = sqrt(k*R*T0) # ISA sea level speed sound
rho0 = 1.225    # ISA sea level density in Kg/m3

# Return knots given m/s
def kt(m):
    return m/ms_per_kt

# Return pressure ratio given a Mach number and static pressure,
# assuming compressible flow
def compressible_pitot(M):
    return (M*M*(k-1)/2 + 1) ** (k/(k-1)) - 1

# Return Mach number, given a pressure ratio d=p_d/p_s
def pitot_to_Mach(d):
    return sqrt(((d+1)**((k-1)/k) - 1)*2/(k-1))

# Given an altitude h, return the temperature, assuming we're
# using the International Standard Atmosphere and are flying
# in the troposphere.
def temperature(h):
    return T0 - h*L

# Given an altitude h, return the local spead of sound, assuming
# we're using the International Standard Atmosphere and are flying
# in the troposphere.
def lss(h):
    return sqrt(k*R*temperature(h))

# Given an altitude h, return the pressure, assuming we're
# using the International Standard Atmosphere and are flying
# in the troposphere.
def pressure(h):
    return p0 * (temperature(h) / T0) ** (g / L / R)

# Given an altitude h, return the density, assuming we're
# using the International Standard Atmosphere and are flying
# in the troposphere.
def density(h):
    return pressure(h) / (R * temperature(h))

if len(sys.argv) < 2:
    print("usage: {} CAS ALT".format(sys.argv[0]))

cas = float(sys.argv[1])*ms_per_kt # Convert kts to m/s
alt = float(sys.argv[2])/feet_per_metre  # Convert ft to m

ps = pressure(alt)
lss = lss(alt)
oat = temperature(alt)
rho = density(alt)

# First we need to "reverse" the air speed indicator to find the dynamic
# or "impact" pressure. It is tempting to assume that an airspeed
# indicator relates airspeed to dynamic pressure using Bernoulli's
# 0.5 * rho * v**2, but it that is not the case here. Instead,
# a sort of modified compressible flow equation is used. A "pseudo"
# mach number is found as a function of a pressure ratio, assuming the
# static pressure is equal to ISA conditions. The airspeed is then found
# by assuming the local speed of sound is that of ISA sea level.
pd = compressible_pitot(cas/lss0) * p0

# Find Mach number
M = pitot_to_Mach(pd / ps)

# Calculate EAS (equivalent air speed)

eas = lss0 * M * sqrt(ps/p0)

# Calculate TAS (true air speed)

tas = lss * M

# Or we could have used tas = eas / sqrt(rho/rho0)

print(f"Pressure Altitude:     {alt*feet_per_metre:5.0f}   ft")
print(f"Static Temperature:      {oat-T_0C:5.1f} C")
print(f"Density Ratio:            {rho/rho0:6.3f}")
print(f"Pressure Ratio:           {ps/p0:6.3f}")
print(f"Static Pressure:        {ps/1e2:6.1f} mb")
print(f"Dynamic Pressure:       {pd/1e2:6.1f} mb")
print(f"Total Pressure:         {(pd+ps)/1e2:6.1f} mb")
print(f"CAS:                    {kt(cas):6.1f} kt")
print(f"EAS:                    {kt(eas):6.1f} kt")
print(f"TAS:                    {kt(tas):6.1f} kt")
print(f"LSS:                    {kt(lss):6.1f} kt")
print(f"Mach:                      {M:4.2f}")
  • $\begingroup$ It is almost a year passed by and finally someone researched this question in my desired degree of details :) Thank you! The explanation gave me a good understanding what questions a designer of adiru is confronted. Most epic is your python solution because this is exactly what I had to do on some crappy way X) $\endgroup$ Commented Apr 20, 2020 at 7:39
  • $\begingroup$ Thank you for your lovely comment, and for approving my answer. I had no idea if you'd find my answer, it being so long ago, but I was going through a similar frustrating situation with understanding EAS myself and wanted to share what I found. I'm so glad it helped. $\endgroup$
    – Halzephron
    Commented Apr 20, 2020 at 10:26
  • $\begingroup$ Hello Halzephron, welcome to aviation.stackexchange. Very nice answer, I hope you'll write more of those in the future! Cheers, DL $\endgroup$
    – DeltaLima
    Commented Apr 20, 2020 at 11:05

Airspeed is measured with a pitot tube. A pitot tube has two pressure measurement ports. One that measures the total pressure $p_t$. This port is facing the incoming airflow. The other measures the static pressure $p$ and is placed perpendicular to the airflow. The difference between the two pressures is called impact pressure (pressure rise do to the airflow impacting the pitot tube) and is denoted $q_c$.

The impact pressure is related to the speed of the airflow the pitot tube is exposed to. If the flow is considered incompressible (which is an acceptable approximation for speeds up to 200 knots) the impact pressure can be derived from Bernouilli's equation.

$q_c = \frac{1}{2}\rho V^2$

  • $q_c$ is the impact pressure in Pa
  • $\rho$ is the density in kg/m3
  • $V$ is the true airspeed in m/s

Equivalent airspeed

The airspeed indicator is calibrated for standard sea level conditions, where $\rho$ is 1.225 kg/m3. In reality the aircraft will fly at altitude and therefor the actual density of the air is lower. Therefor the airspeed as measured by impact pressure will be lower as well. For example if an aircraft flies 75 m/s (about 146 knots) at 6000 ft the density will be 1.02393 kg/m3.

$q_c = \frac{1}{2} 1.02393 \cdot 75 ^2 = 2879.8 \textrm{ Pa}$

The equivalent airspeed at sea level for the same $q_c$ is:

$V_{EAS} = \sqrt{\frac{2 q_c}{\rho_0}} = \sqrt{\frac{2 \cdot 2879.8}{1.225}} = 68.6 \textrm{ m/s}$

Your airspeed indicator (assuming no errors) will read only 68.6 m/s (133 knots) despite the fact that you are moving with 75 m/s (146 knots) with respect to the air.

Conversion of true airspeed to the equivalent airspeed can be done directly by:

$V_{EAS} =V\cdot \sqrt{\frac{\rho}{\rho_0}}$

  • $V_{EAS}$ equivalent airspeed (m/s)
  • $V$ true airspeed (m/s)
  • $\rho$ actual air density (kg/m3).
  • $\rho_0$ density at standard sea level conditions (1.225 kg/m3)

Calibrated airspeed

The effects of the lower density on your aispeed indicator become more pronounced the higher you go. Once you go faster than about 100 m/s true airspeed the effects of compressibility can no longer be ignored and the above no longer applies. Airspeed indicators are corrected for effects of compressibility and therefore don't use the equivalent airspeed but instead use calibrated airspeed for calibration.


  • $V_{CAS}$ is calibrated airspeed
  • $a_{0}$ is the speed of sound under standard sea level conditions (340.3 m/s)
  • $p_0$ is the static air pressure under standard sea level conditions (101325 Pa)
  • ${q_c}$ is the impact pressure

The impact pressure is also a bit more complex for compressible flow:

$\;q_c = p\left[\left(1+0.2 M^2 \right)^\tfrac{7}{2}-1\right]$

  • $p$ the static pressure
  • $M$ the Mach number

Indicated airspeed

The airspeed that is actually indicate on the airspeed indicator deviates from the calibrated airspeed because of several error factors:

  • instrument error
  • position error
  • installation error

Instrument error are errors within the airspeed indicator when converting the static pressure and the total pressure to a speed indication. In mechanical instruments these are often more pronounced that in digital systems.

Position error are errors in the position of the static port (not measuring exactly static pressure, but also some effects of moving air) and position of the total pressure port (not exactly measuring the full ram rise).

Finally there are installation errors, which include for example leaking tubes between the instrument and the pitot ports.

Given the above, we can now derive the relation between Calibrated Airspeed and Equivalent airspeed

Calibrated airspeed is dependent on the impact pressure, which is in turn depending on the Mach number.

The Mach number is the ratio between the true air speed and the speed of sound $a = \sqrt{\gamma R T}$. We can now express the Mach number as a function of the equivalent airspeed:

$M = \frac{V}{\sqrt{\gamma R T}} = \frac{V_{EAS}\sqrt{\frac{\rho_0}{\rho}}}{\sqrt{\gamma R T}}$

From the ideal gas law it follows that $p = \rho R T$ and so we can simplify the Mach number to :

$ M = V_{EAS}\sqrt{\frac{\rho_0}{\gamma p}} $

From this it follows that impact pressure for compressible flow is:

$\;q_c = p\left[\left(1+0.2 M^2 \right)^\tfrac{7}{2}-1\right] = p\left[\left(1+ \frac{\rho_0}{5\gamma p} V_{EAS}^2 \right)^\tfrac{7}{2}-1\right] $

That brings the relation between CAS and EAS to :

$V_{CAS}=a_{0}\sqrt{5\left[\left(\frac{p}{p_{0}}\left[\left(1+ \frac{\rho_0}{5\gamma p} V_{EAS}^2 \right)^\tfrac{7}{2}-1\right]+1\right)^\frac{2}{7}-1\right]}$

Solving it for EAS = f(CAS) is left to the reader.

Parts of this answer are taken from this answer.

  • $\begingroup$ All what is explained here is information that you find in most books, "the easy way", but Im looking for more mathematical explanation. Is there some authors who goes deeper? $\endgroup$ Commented May 25, 2019 at 11:21
  • $\begingroup$ Hello @ptiza_v_nebe, I don't understand what you are looking for. All the mathematical relations between the speeds are in the answer, except for the relation between IAS and CAS because that relation is specific to each aircraft. Can you explain what you are missing? $\endgroup$
    – DeltaLima
    Commented May 25, 2019 at 16:32
  • $\begingroup$ My question is still EAS = f(CAS). How to accomplish this? How does ADIRU calculate all the speeds if it has only pressures from pitot tube and Temperature? Other thing, what you have mentioned is only summarize of all knowledge about air characteristics and using pitot tube. What I need for example is, where does the formula for CAS come from? What are the roots with all physical relations? Is there no author who can explain things about air data holistically? $\endgroup$ Commented May 26, 2019 at 9:09
  • $\begingroup$ Hello @ptiza_v_nebe The ADIRU follows these equations and may have a lookup table to correct the for pitot port position errors. For the fundamental physics behind the compressible flow, I would start with the Euler equations. You can integrate these to get to Bernoulli's equation (assume $\rho$ is constant) or to the compressible variant (assuming adiabitic compression), taking into account the appropriate thermodynamic equations. It is a bit too much to cover that here in a single answer. $\endgroup$
    – DeltaLima
    Commented May 27, 2019 at 11:20
  • $\begingroup$ DeltaLima! You are the best! Thank you! $\endgroup$ Commented May 27, 2019 at 15:50

For a more condensed explanation of EAS / ATPL studies:

It is the speed at which an aircraft would have to fly at MSL to experience the same dynamic pressure as experienced by the aircraft flying at a given CAS(for a specific pressure ALT).This is also the reason why the the EAS is always lower than CAS.

At Sea Level the CAS is equal to EAS, upto 10000' and below 250KCAS it closely approximates the same.

The measurement of EAS is essential for Structural engineers who are verifying the integrity of aircraft structures as modeled in an incompressible flow simulation.


Given the question:

How to calculate EAS from CAS immediately with EAS = f(CAS)?
I know that one can calculate EAS with EAS = f(Mach, a_0), also by taking in account of the compressibility of air.

The simplest way to get EAS is to reverse the following equation 2:

$V_{CAS} = V_{EAS}*f_0/f = a_{standard}\sqrt{5}\sqrt{(\delta[(1+\frac{M^2}{5})^{7/2}-1]+1)^{2/7}+1} $

which has a series expansion in M of:

$V_{CAS} \approx V_{EAS}* [1+\frac{1}{8}(1-\delta)*M^2+\frac{3}{640}(1 - 10\delta + 9\delta^2)M^4 ] $

Which is accurate to 1% below M=1.2. For the rest of the answer I'll be omitting the fourth order term as it's neglible below Mach 0.85.

f = Compressibility factor

f0= Compressibility factor at sea level

δ = Pressure ratio P/P0.

a_standard = 661.47 knots

But what about Mach vs EAS?

Since Mach is a function of airspeed, EAS appears multiple times in the equation, so for any significant difference between initial guess and actual EAS, an EAS that appears to satisfy the above formula will result in a new Mach value which will require another iteration. That relationship is:

$ M = V_{TAS}/c = V_{TAS}/\sqrt{\gamma R_* T} = \frac{V_{EAS}}{\sqrt{\gamma R_* T \rho/\rho_0}} $


γ is specific heat ratio 1.4

R is the specific gas constant for air = 1085 kt^2/K

T is the static air temperature in (in K, not Celsius)

ρ/ρ0 is the ratio of air density at the current altitude to sea level

This allows us to more directly relate CAS to EAS as:

$V_{CAS} \approx V_{EAS}* [1+\frac{1}{8}(1-\delta)*M^2 ] = V_{EAS} [1+\frac{1}{8}(1-\delta)*\frac{V_{EAS}^2}{\gamma R_* T \rho/\rho_0} ] = V_{EAS} [1+ C {V_{EAS}^2}] $

Where C is used to simplify the constant terms. Using the ISA model, even though it won't exactly match actual flight conditions, you'd get the following example values for C:

Alt (ft) Pressure P/P0 density rho/rho0 Speed of sound (kts) Correction term C (units kt-2)
0 1 1 661 0
10,000 0.6877 0.7385 638 1.299E-07
35,000 0.2353 0.3099 576 9.297E-07
40,000 0.1851 0.2462 573 1.260E-06

For example, at 40,000 ft and -56.5° C you have: 300 knots EAS = 300 + 1.26E-07*300^3 = 334 kts CAS

Getting EAS = f(CAS) from CAS=f(EAS)

Now you may be saying at this point that so far this answer hasn't actually provided a formula that outputs a single closed-form solution for EAS as a function of CAS, and not EAS=f(TAS) or EAS=f(Mach), or CAS=f(EAS). Admittedly, at the time of writing no one else on this page has either.

The simplest solution in real software might actually be to use a lookup table on one of the above formulas such as CAS = EAS*(1+c*EAS^2). Depending on the solution and the required precision that could actually be faster and more accurate than lots of floating point operations.

If you'd prefer a closed-form solution, a single iteration of Newton's method can give a relatively simple and decently accurate solution:

$ V_{EAS} \approx V_{CAS} - \frac{C \cdot V_{CAS}^3}{1 + 3C \cdot V_{CAS}^2} $

Where C is the factor above which equals $ \frac{(1-\delta)}{8\gamma R_* T \rho/\rho_0} $

You can also invert the earlier formula for EAS vs M:

$ \frac{V_{EAS}}{a_{standard}} = M = \sqrt{5} \sqrt{(\frac{1}{\delta}[((\frac{V_{CAS}}{a_{standard}})^2/5 +1)^{7/2}-1]+1)^{2/7} -1 } $


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .