What does the numerical literal 0.e0f mean?

c, literals, openblas

Solution

A floating-point literals have two syntaxes. The first one consists of the following parts:

- nonempty sequence of decimal digits containing a decimal point character (defines significand)

- (optional) e or E followed with optional minus or plus sign and nonempty sequence of decimal digits (defines exponent)

- (optional) a suffix type specifier as a l, f, L or F

The second one consists of the following parts:

- nonempty sequence of decimal digits (defines significant)

- e or E followed with optional minus or plus sign and nonempty sequence of decimal digits (defines exponent)

- (optional) a suffix type specifier as a l, f, L or F

The suffix type specifier defines the actual type of the floating-point literal:

- (no suffix) defines double

- f F defines float

- l L defines long double

Problem

I am currently trying to debug an uninitialized memory error. I have now come across the numerical literal 0.e0f in the OpenBlas source code (which is what the debugger is currently at) what does that mean? The context is this: ``` if ((alpha_r == 0.e0f) && (alpha_i == 0.e0f)) return; ``` The 0.e0f evaluates to 0 apparently.

Original source