⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rt_fp.h

📁 realview22.rar
💻 H
字号:
/* rt_fp.h: prototypes for the fplib basic-arithmetic functions
 *
 * Copyright 1999 ARM Limited. All rights reserved.
 *
 * RCS $Revision: 1.6 $
 * Checkin $Date: 2002/06/25 15:39:41 $
 * Revising $Author: sdouglas $
 */

#ifndef __RT_FP_H
#define __RT_FP_H

#ifdef __cplusplus
extern "C" {
#endif

/*
 * For the benefit of the VFP support library, we allow a module
 * including this file to define a name-mapping macro `_PREFIX()',
 * which transforms a name such as `_fadd' into something like
 * `vfp_fadd'.
 */
#ifndef _PREFIX
#define _PREFIX(x) x
#endif

/*
 * Trivial routines.
 */
extern __softfp float _PREFIX(_fneg)(float);
extern __softfp float _PREFIX(_fabs)(float);
extern __softfp double _PREFIX(_dneg)(double);
extern __softfp double _PREFIX(_dabs)(double);

/*
 * Single-precision arithmetic routines.
 */
extern __softfp float _PREFIX(_fadd)(float, float);
extern __softfp float _PREFIX(_fsub)(float, float);
extern __softfp float _PREFIX(_frsb)(float, float);
extern __softfp float _PREFIX(_fmul)(float, float);
extern __softfp float _PREFIX(_fdiv)(float, float);
extern __softfp float _PREFIX(_frdiv)(float, float);
extern __softfp float _PREFIX(_frem)(float, float);
extern __softfp float _PREFIX(_frnd)(float);
extern __softfp float _PREFIX(_fsqrt)(float);

/*
 * Double-precision arithmetic routines.
 */
extern __softfp double _PREFIX(_dadd)(double, double);
extern __softfp double _PREFIX(_dsub)(double, double);
extern __softfp double _PREFIX(_drsb)(double, double);
extern __softfp double _PREFIX(_dmul)(double, double);
extern __softfp double _PREFIX(_ddiv)(double, double);
extern __softfp double _PREFIX(_drdiv)(double, double);
extern __softfp double _PREFIX(_drem)(double, double);
extern __softfp double _PREFIX(_drnd)(double);
extern __softfp double _PREFIX(_dsqrt)(double);

/*
 * Boolean-return compares ({f,d}cmp{eq,ge,le} are not listed
 * because they return results in the flags and so cannot be
 * described by C prototypes).
 */
extern __softfp int _PREFIX(_feq)(float, float);
extern __softfp int _PREFIX(_fneq)(float, float);
extern __softfp int _PREFIX(_fgeq)(float, float);
extern __softfp int _PREFIX(_fgr)(float, float);
extern __softfp int _PREFIX(_fleq)(float, float);
extern __softfp int _PREFIX(_fls)(float, float);
extern __softfp int _PREFIX(_deq)(double, double);
extern __softfp int _PREFIX(_dneq)(double, double);
extern __softfp int _PREFIX(_dgeq)(double, double);
extern __softfp int _PREFIX(_dgr)(double, double);
extern __softfp int _PREFIX(_dleq)(double, double);
extern __softfp int _PREFIX(_dls)(double, double);

/*
 * Four-way compares. These return VFP-type status flags _in_ the
 * CPSR, but also return in r0 so they can be called sensibly from
 * C.
 */
extern __softfp unsigned _PREFIX(_fcmp4)(float, float);
extern __softfp unsigned _PREFIX(_fcmp4e)(float, float);
extern __softfp unsigned _PREFIX(_dcmp4)(double, double);
extern __softfp unsigned _PREFIX(_dcmp4e)(double, double);

/*
 * Floating-to-floating format conversions.
 */
extern __softfp double _PREFIX(_f2d)(float);
extern __softfp float _PREFIX(_d2f)(double);

/*
 * Integer-to-floating format conversions.
 */
extern __softfp float _PREFIX(_fflt)(int);
extern __softfp float _PREFIX(_ffltu)(unsigned int);
extern __softfp double _PREFIX(_dflt)(int);
extern __softfp double _PREFIX(_dfltu)(unsigned int);
#if !defined(__STRICT_ANSI__) || (defined(__STDC_VERSION__) && 199901L <= __STDC_VERSION__)
extern __softfp float _PREFIX(_ll_sto_f)(long long);
extern __softfp float _PREFIX(_ll_uto_f)(unsigned long long);
extern __softfp double _PREFIX(_ll_sto_d)(long long);
extern __softfp double _PREFIX(_ll_uto_d)(unsigned long long);
#endif /* __STRICT_ANSI__ */

/*
 * Floating-to-integer format conversions, rounding toward zero
 * always.
 */
extern __softfp int _PREFIX(_ffix)(float);
extern __softfp unsigned int _PREFIX(_ffixu)(float);
extern __softfp int _PREFIX(_dfix)(double);
extern __softfp unsigned int _PREFIX(_dfixu)(double);
#if !defined(__STRICT_ANSI__) || (defined(__STDC_VERSION__) && 199901L <= __STDC_VERSION__)
extern __softfp long long _PREFIX(_ll_sfrom_f)(float);
extern __softfp unsigned long long _PREFIX(_ll_ufrom_f)(float);
extern __softfp long long _PREFIX(_ll_sfrom_d)(double);
extern __softfp unsigned long long _PREFIX(_ll_ufrom_d)(double);
#endif /* __STRICT_ANSI__ */

/*
 * Floating-to-integer format conversions, rounding to nearest or
 * configurably.
 */
extern __softfp int _PREFIX(_ffix_r)(float);
extern __softfp unsigned int _PREFIX(_ffixu_r)(float);
extern __softfp int _PREFIX(_dfix_r)(double);
extern __softfp unsigned int _PREFIX(_dfixu_r)(double);
#if !defined(__STRICT_ANSI__) || (defined(__STDC_VERSION__) && 199901L <= __STDC_VERSION__)
extern __softfp long long _PREFIX(_ll_sfrom_f_r)(float);
extern __softfp unsigned long long _PREFIX(_ll_ufrom_f_r)(float);
extern __softfp long long _PREFIX(_ll_sfrom_d_r)(double);
extern __softfp unsigned long long _PREFIX(_ll_ufrom_d_r)(double);
#endif /* __STRICT_ANSI__ */

/*
 * Call this before using any fplib routines, if you're trying to
 * use fplib on the bare metal.
 */
extern void _PREFIX(_fp_init)(void);

/*
 * This returns a pointer to the FP status word, when it's stored
 * in memory.
 */
extern unsigned * _PREFIX(__rt_fp_status_addr)(void);

#ifdef __cplusplus
}
#endif

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -