Use of extern in in the implementation of double floats from an external library

The short answer is you need to do this...

#ifdef __cplusplus
extern "C" {
#endif
float64_t f_add(float64_t a, float64_t b);      // Returns a+b . Special case: -INF + INF = NaN
float64_t f_sub(float64_t a, float64_t b);      // Returns a-b . Special case:  INF - INF = NaN
float64_t f_mult(float64_t fa, float64_t fb);   // Returns a*b . Special case: +/-INF * 0 = NaN
float64_t f_div(float64_t x, float64_t y);      // Returns a/b . Special cases: x/0=NaN , INF/INF = NaN , x/INF = 0 if x!=+/-INF
#ifdef __cplusplus
}
#endif

The long answer...