libfixmath
libfixmath| 개발자 | Ben Brewer (일명 플랫머시) |
|---|---|
| 안정된 릴리스 | r64 / 2012년 2월 2일, 전( |
| 저장소 | |
| 기입처 | C99 |
| 운영 체제 | 크로스 플랫폼 |
| 유형 | 고정 소수점 연산 라이브러리 |
| 면허증. | MIT |
| 웹 사이트 | code |
libfixmath는 플랫폼에 의존하지 않는 고정 소수점 연산 라이브러리입니다.이것은 개발자에게 Q16.16 고정 소수점 숫자에 사용하기 위한 표준 math.h 함수와 유사한 인터페이스를 제공합니다.libfixmath에는 stdint.h와 64비트 정수 산술(GCC [1]등)을 지원하는 컴파일러 이외의 외부 의존관계가 없습니다.조건부 컴파일러 옵션은 64비트 연산을 [2]지원하지 않는 마이크로컨트롤러 및 DSP용 컴파일러가 많기 때문에 64비트 대응 컴파일러의 요건을 없애기 위해 존재합니다.
역사
libfixmath는 원래 Ben Brewer(일명 플랫머시)에 의해 개발되었으며 Dingoo [3]SDK의 일부로 처음 공개되었습니다.그 이후로 FGL이라고 [4]불리는 소프트웨어 3D 그래픽 라이브러리를 구현하기 위해 사용되었습니다.
Q16.16 기능
| 이름. | 묘사 |
|---|---|
fix16_acos | 역코사인 |
fix16_asin | 역사인 |
fix16_atan | 일변수 역접선 |
fix16_atan2 | 2-파라미터 역접선 |
fix16_cos | 코사인 |
fix16_exp | 지수 함수 |
fix16_sin | 사인 |
fix16_sqrt | 제곱근 |
fix16_tan | 접선 |
fix16_mul | 곱셈 |
fix16_div | 나누기 |
fix16_sadd | 포화상태의 추가 |
fix16_smul | 포화상태의 곱셈 |
fix16_sdiv | 포화상태의 나누기 |
기타 기능
| 이름. | 묘사 |
|---|---|
fix16_to_dbl | Q16.16을 더블로 변환 |
fix16_to_float | Q16.16을 플로트로 변환 |
fix16_to_int | Q16.16을 정수로 변환합니다. |
fix16_from_dbl | Q16.16으로 더블 변환 |
fix16_from_float | 플로트를 Q16.16으로 변환 |
fix16_from_int | 정수를 Q16.16으로 변환하다 |
성능
가장 부하가 높은 기능(atan2)의 벤치마크 결과는 다음과 같습니다.
| 이름. | 플로트와 비교한 시간 |
|---|---|
| ARM Cortex-M0 | 26.3% |
| Marvell PXA270 (ARM) (312 MHz) | 58.45% |
| 인텔 T5500 | 120% |
| 인텔 ATOM N280 | 141% |
참고: 이러한 결과는 캐싱 최적화를 [5]끈 상태에서 fixtest를 사용하여 계산되었습니다.
라이선스
libfixmath는 MIT 라이선스(허용 자유 소프트웨어 라이선스)에 따라 출시되며 자유 소프트웨어입니다.