📄 math.c
字号:
/*** $Id: math.c,v 1.5 2003/09/28 09:36:46 weiym Exp $**** math.c: the fixed point math routines.** ** Copyright (C) 2003 Feynman Software.** Copyright (C) 2000 ~ 2002 Wei Yongming.**** Current maintainer: Wei Yongming.*//*** This program is free software; you can redistribute it and/or modify** it under the terms of the GNU General Public License as published by** the Free Software Foundation; either version 2 of the License, or** (at your option) any later version.**** This program is distributed in the hope that it will be useful,** but WITHOUT ANY WARRANTY; without even the implied warranty of** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the** GNU General Public License for more details.**** You should have received a copy of the GNU General Public License** along with this program; if not, write to the Free Software** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA*//* ______ ___ ___ * /\ _ \ /\_ \ /\_ \ * \ \ \L\ \\//\ \ \//\ \ __ __ _ __ ___ * \ \ __ \ \ \ \ \ \ \ /'__`\ /'_ `\/\`'__\/ __`\ * \ \ \/\ \ \_\ \_ \_\ \_/\ __//\ \L\ \ \ \//\ \L\ \ * \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/ * \/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/ * /\____/ * \_/__/ * * Fixed point math routines and lookup tables. * * By Shawn Hargreaves. * * See readme.txt for copyright information. */#include "common.h"#include "fixedmath.h"fixed _cos_tbl[512] ={ /* precalculated fixed point (16.16) cosines for a full circle (0-255) */ 65536L, 65531L, 65516L, 65492L, 65457L, 65413L, 65358L, 65294L, 65220L, 65137L, 65043L, 64940L, 64827L, 64704L, 64571L, 64429L, 64277L, 64115L, 63944L, 63763L, 63572L, 63372L, 63162L, 62943L, 62714L, 62476L, 62228L, 61971L, 61705L, 61429L, 61145L, 60851L, 60547L, 60235L, 59914L, 59583L, 59244L, 58896L, 58538L, 58172L, 57798L, 57414L, 57022L, 56621L, 56212L, 55794L, 55368L, 54934L, 54491L, 54040L, 53581L, 53114L, 52639L, 52156L, 51665L, 51166L, 50660L, 50146L, 49624L, 49095L, 48559L, 48015L, 47464L, 46906L, 46341L, 45769L, 45190L, 44604L, 44011L, 43412L, 42806L, 42194L, 41576L, 40951L, 40320L, 39683L, 39040L, 38391L, 37736L, 37076L, 36410L, 35738L, 35062L, 34380L, 33692L, 33000L, 32303L, 31600L, 30893L, 30182L, 29466L, 28745L, 28020L, 27291L, 26558L, 25821L, 25080L, 24335L, 23586L, 22834L, 22078L, 21320L, 20557L, 19792L, 19024L, 18253L, 17479L, 16703L, 15924L, 15143L, 14359L, 13573L, 12785L, 11996L, 11204L, 10411L, 9616L, 8820L, 8022L, 7224L, 6424L, 5623L, 4821L, 4019L, 3216L, 2412L, 1608L, 804L, 0L, -804L, -1608L, -2412L, -3216L, -4019L, -4821L, -5623L, -6424L, -7224L, -8022L, -8820L, -9616L, -10411L, -11204L, -11996L, -12785L, -13573L, -14359L, -15143L, -15924L, -16703L, -17479L, -18253L, -19024L, -19792L, -20557L, -21320L, -22078L, -22834L, -23586L, -24335L, -25080L, -25821L, -26558L, -27291L, -28020L, -28745L, -29466L, -30182L, -30893L, -31600L, -32303L, -33000L, -33692L, -34380L, -35062L, -35738L, -36410L, -37076L, -37736L, -38391L, -39040L, -39683L, -40320L, -40951L, -41576L, -42194L, -42806L, -43412L, -44011L, -44604L, -45190L, -45769L, -46341L, -46906L, -47464L, -48015L, -48559L, -49095L, -49624L, -50146L, -50660L, -51166L, -51665L, -52156L, -52639L, -53114L, -53581L, -54040L, -54491L, -54934L, -55368L, -55794L, -56212L, -56621L, -57022L, -57414L, -57798L, -58172L, -58538L, -58896L, -59244L, -59583L, -59914L, -60235L, -60547L, -60851L, -61145L, -61429L, -61705L, -61971L, -62228L, -62476L, -62714L, -62943L, -63162L, -63372L, -63572L, -63763L, -63944L, -64115L, -64277L, -64429L, -64571L, -64704L, -64827L, -64940L, -65043L, -65137L, -65220L, -65294L, -65358L, -65413L, -65457L, -65492L, -65516L, -65531L, -65536L, -65531L, -65516L, -65492L, -65457L, -65413L, -65358L, -65294L, -65220L, -65137L, -65043L, -64940L, -64827L, -64704L, -64571L, -64429L, -64277L, -64115L, -63944L, -63763L, -63572L, -63372L, -63162L, -62943L, -62714L, -62476L, -62228L, -61971L, -61705L, -61429L, -61145L, -60851L, -60547L, -60235L, -59914L, -59583L, -59244L, -58896L, -58538L, -58172L, -57798L, -57414L, -57022L, -56621L, -56212L, -55794L, -55368L, -54934L, -54491L, -54040L, -53581L, -53114L, -52639L, -52156L, -51665L, -51166L, -50660L, -50146L, -49624L, -49095L, -48559L, -48015L, -47464L, -46906L, -46341L, -45769L, -45190L, -44604L, -44011L, -43412L, -42806L, -42194L, -41576L, -40951L, -40320L, -39683L, -39040L, -38391L, -37736L, -37076L, -36410L, -35738L, -35062L, -34380L, -33692L, -33000L, -32303L, -31600L, -30893L, -30182L, -29466L, -28745L, -28020L, -27291L, -26558L, -25821L, -25080L, -24335L, -23586L, -22834L, -22078L, -21320L, -20557L, -19792L, -19024L, -18253L, -17479L, -16703L, -15924L, -15143L, -14359L, -13573L, -12785L, -11996L, -11204L, -10411L, -9616L, -8820L, -8022L, -7224L, -6424L, -5623L, -4821L, -4019L, -3216L, -2412L, -1608L, -804L, 0L, 804L, 1608L, 2412L, 3216L, 4019L, 4821L, 5623L, 6424L, 7224L, 8022L, 8820L, 9616L, 10411L, 11204L, 11996L, 12785L, 13573L, 14359L, 15143L, 15924L, 16703L, 17479L, 18253L, 19024L, 19792L, 20557L, 21320L, 22078L, 22834L, 23586L, 24335L, 25080L, 25821L, 26558L, 27291L, 28020L, 28745L, 29466L, 30182L, 30893L, 31600L, 32303L, 33000L, 33692L, 34380L, 35062L, 35738L, 36410L, 37076L, 37736L, 38391L, 39040L, 39683L, 40320L, 40951L, 41576L, 42194L, 42806L, 43412L, 44011L, 44604L, 45190L, 45769L, 46341L, 46906L, 47464L, 48015L, 48559L, 49095L, 49624L, 50146L, 50660L, 51166L, 51665L, 52156L, 52639L, 53114L, 53581L, 54040L, 54491L, 54934L, 55368L, 55794L, 56212L, 56621L, 57022L, 57414L, 57798L, 58172L, 58538L, 58896L, 59244L, 59583L, 59914L, 60235L, 60547L, 60851L, 61145L, 61429L, 61705L, 61971L, 62228L, 62476L, 62714L, 62943L, 63162L, 63372L, 63572L, 63763L, 63944L, 64115L, 64277L, 64429L, 64571L, 64704L, 64827L, 64940L, 65043L, 65137L, 65220L, 65294L, 65358L, 65413L, 65457L, 65492L, 65516L, 65531L};fixed _tan_tbl[256] ={ /* precalculated fixed point (16.16) tangents for a half circle (0-127) */ 0L, 804L, 1609L, 2414L, 3220L, 4026L, 4834L, 5644L, 6455L, 7268L, 8083L, 8901L, 9721L, 10545L, 11372L, 12202L, 13036L, 13874L, 14717L, 15564L, 16416L, 17273L, 18136L, 19005L, 19880L, 20762L, 21650L, 22546L, 23449L, 24360L, 25280L, 26208L, 27146L, 28093L, 29050L, 30018L, 30996L, 31986L, 32988L, 34002L, 35030L, 36071L, 37126L, 38196L, 39281L, 40382L, 41500L, 42636L, 43790L, 44963L, 46156L, 47369L, 48605L, 49863L, 51145L, 52451L, 53784L, 55144L, 56532L, 57950L, 59398L, 60880L, 62395L, 63947L, 65536L, 67165L, 68835L, 70548L, 72308L, 74116L, 75974L, 77887L, 79856L, 81885L, 83977L, 86135L, 88365L, 90670L, 93054L, 95523L, 98082L, 100736L, 103493L, 106358L, 109340L, 112447L, 115687L, 119071L, 122609L, 126314L, 130198L, 134276L, 138564L, 143081L, 147847L, 152884L, 158218L, 163878L, 169896L, 176309L, 183161L, 190499L, 198380L, 206870L, 216043L, 225990L, 236817L, 248648L, 261634L, 275959L, 291845L, 309568L, 329472L, 351993L, 377693L, 407305L, 441808L, 482534L, 531352L, 590958L, 665398L, 761030L, 888450L, 1066730L,1334016L,1779314L,2669641L,5340086L, -2147483647L,-5340086L,-2669641L,-1779314L,-1334016L,-1066730L,-888450L,-761030L, -665398L,-590958L,-531352L,-482534L,-441808L,-407305L,-377693L,-351993L, -329472L,-309568L,-291845L,-275959L,-261634L,-248648L,-236817L,-225990L, -216043L,-206870L,-198380L,-190499L,-183161L,-176309L,-169896L,-163878L, -158218L,-152884L,-147847L,-143081L,-138564L,-134276L,-130198L,-126314L, -122609L,-119071L,-115687L,-112447L,-109340L,-106358L,-103493L,-100736L, -98082L, -95523L, -93054L, -90670L, -88365L, -86135L, -83977L, -81885L, -79856L, -77887L, -75974L, -74116L, -72308L, -70548L, -68835L, -67165L, -65536L, -63947L, -62395L, -60880L, -59398L, -57950L, -56532L, -55144L, -53784L, -52451L, -51145L, -49863L, -48605L, -47369L, -46156L, -44963L, -43790L, -42636L, -41500L, -40382L, -39281L, -38196L, -37126L, -36071L, -35030L, -34002L, -32988L, -31986L, -30996L, -30018L, -29050L, -28093L, -27146L, -26208L, -25280L, -24360L, -23449L, -22546L, -21650L, -20762L, -19880L, -19005L, -18136L, -17273L, -16416L, -15564L, -14717L, -13874L, -13036L, -12202L, -11372L, -10545L, -9721L, -8901L, -8083L, -7268L, -6455L, -5644L, -4834L, -4026L, -3220L, -2414L, -1609L, -804L};fixed _acos_tbl[513] ={ /* precalculated fixed point (16.16) inverse cosines (-1 to 1) */ 0x800000L, 0x7C65C7L, 0x7AE75AL, 0x79C19EL, 0x78C9BEL, 0x77EF25L, 0x772953L, 0x76733AL, 0x75C991L, 0x752A10L, 0x74930CL, 0x740345L, 0x7379C1L, 0x72F5BAL, 0x72768FL, 0x71FBBCL, 0x7184D3L, 0x711174L, 0x70A152L, 0x703426L, 0x6FC9B5L, 0x6F61C9L, 0x6EFC36L, 0x6E98D1L, 0x6E3777L, 0x6DD805L, 0x6D7A5EL, 0x6D1E68L, 0x6CC40BL, 0x6C6B2FL, 0x6C13C1L, 0x6BBDAFL, 0x6B68E6L, 0x6B1558L, 0x6AC2F5L, 0x6A71B1L, 0x6A217EL, 0x69D251L, 0x698420L, 0x6936DFL, 0x68EA85L, 0x689F0AL, 0x685465L, 0x680A8DL, 0x67C17DL, 0x67792CL, 0x673194L, 0x66EAAFL, 0x66A476L, 0x665EE5L, 0x6619F5L, 0x65D5A2L, 0x6591E7L, 0x654EBFL, 0x650C26L, 0x64CA18L, 0x648890L, 0x64478CL, 0x640706L, 0x63C6FCL, 0x63876BL, 0x63484FL, 0x6309A5L, 0x62CB6AL, 0x628D9CL, 0x625037L, 0x621339L, 0x61D69FL, 0x619A68L, 0x615E90L, 0x612316L, 0x60E7F7L, 0x60AD31L, 0x6072C3L, 0x6038A9L, 0x5FFEE3L, 0x5FC56EL, 0x5F8C49L, 0x5F5372L, 0x5F1AE7L, 0x5EE2A7L, 0x5EAAB0L, 0x5E7301L, 0x5E3B98L, 0x5E0473L, 0x5DCD92L, 0x5D96F3L, 0x5D6095L, 0x5D2A76L, 0x5CF496L, 0x5CBEF2L, 0x5C898BL, 0x5C545EL, 0x5C1F6BL, 0x5BEAB0L, 0x5BB62DL, 0x5B81E1L, 0x5B4DCAL, 0x5B19E7L, 0x5AE638L, 0x5AB2BCL, 0x5A7F72L, 0x5A4C59L, 0x5A1970L, 0x59E6B6L, 0x59B42AL, 0x5981CCL, 0x594F9BL, 0x591D96L, 0x58EBBDL, 0x58BA0EL, 0x588889L, 0x58572DL, 0x5825FAL, 0x57F4EEL, 0x57C40AL, 0x57934DL, 0x5762B5L, 0x573243L, 0x5701F5L, 0x56D1CCL, 0x56A1C6L, 0x5671E4L, 0x564224L, 0x561285L, 0x55E309L, 0x55B3ADL, 0x558471L, 0x555555L, 0x552659L, 0x54F77BL, 0x54C8BCL, 0x549A1BL, 0x546B98L, 0x543D31L, 0x540EE7L, 0x53E0B9L, 0x53B2A7L, 0x5384B0L, 0x5356D4L, 0x532912L, 0x52FB6BL, 0x52CDDDL, 0x52A068L, 0x52730CL, 0x5245C9L, 0x52189EL, 0x51EB8BL, 0x51BE8FL, 0x5191AAL, 0x5164DCL, 0x513825L, 0x510B83L, 0x50DEF7L, 0x50B280L, 0x50861FL, 0x5059D2L, 0x502D99L, 0x500175L, 0x4FD564L, 0x4FA967L, 0x4F7D7DL, 0x4F51A6L, 0x4F25E2L, 0x4EFA30L, 0x4ECE90L, 0x4EA301L, 0x4E7784L, 0x4E4C19L, 0x4E20BEL, 0x4DF574L, 0x4DCA3AL, 0x4D9F10L, 0x4D73F6L, 0x4D48ECL, 0x4D1DF1L, 0x4CF305L, 0x4CC829L, 0x4C9D5AL, 0x4C729AL, 0x4C47E9L, 0x4C1D45L, 0x4BF2AEL, 0x4BC826L, 0x4B9DAAL, 0x4B733BL, 0x4B48D9L, 0x4B1E84L, 0x4AF43BL, 0x4AC9FEL, 0x4A9FCDL, 0x4A75A7L,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -