• Aucun résultat trouvé

Error-free Tables for Trigonometric Function Evaluation

N/A
N/A
Protected

Academic year: 2021

Partager "Error-free Tables for Trigonometric Function Evaluation"

Copied!
2
0
0

Texte intégral

(1)

HAL Id: lirmm-01273490

https://hal-lirmm.ccsd.cnrs.fr/lirmm-01273490 Submitted on 12 Feb 2016

HAL is a multi-disciplinary open access

archive for the deposit and dissemination of sci-entific research documents, whether they are pub-lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.

Error-free Tables for Trigonometric Function Evaluation

Hugues de Lassus Saint-Geniès, David Defour, Guillaume Revy

To cite this version:

Hugues de Lassus Saint-Geniès, David Defour, Guillaume Revy. Error-free Tables for Trigonometric Function Evaluation. ARCHI: Architecture des systèmes matériels et logiciels embarqués, et méthodes de conception associées, Jun 2015, Lille, France. 8e édition de l’école thématique Archi, 2015. �lirmm-01273490�

(2)

Error-free Tables for Trigonometric Function Evaluation

Hugues de Lassus Saint-Geni`

es, David Defour and Guillaume Revy

´

Equipe DALI – Universit´e de Perpignan Via Domitia – LIRMM – CNRS – UMR 5506

hugues.de-lassus@univ-perp.fr, david.defour@univ-perp.fr, guillaume.revy@univ-perp.fr

1. How does a modern processor calculate sine and cosine?

 Range reduction: use of trigonometric identities

I sin(−x) = − sin(x)

I sin(x) = ±fk x − k · π2! with fk ∈ {sin, cos} ⇒ Range reduction F64 7→ " 0, π4# -1 -0.5 0 0.5 1 -1π 0π 1π sin(x) cos(x)

 Evaluation: use of other trigonometric properties

I sin(xh + xl) = sin(xh) · cos(xl) + cos(xh) · sin(xl)

I cos(xh + xl) = cos(xh) · cos(xl) − sin(xh) · sin(xl)

I Tabulated values for sine and cosine [Tan91]

0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 π / 4 xl sin(xh) cos(xh)

 Reconstruction: scheme reducing the error on tabulated values [GB91]

x ∈ [0, π4]

Splitting x into (xh, x`)

Table lookup Polynomial approximations

Reconstruction

cos(x) = cosh ⊗ cos(x` ⊕ corr) sinh ⊗ sin(x` ⊕ corr) sin(x) = sinh ⊗ cos(x` ⊕ corr) ⊕ cosh ⊗ sin(x` ⊕ corr)

cosh sinh cos(x` ⊕ corr) sin(x` ⊕ corr)

xh x`

corr

2. Pythagorean Triples

 What is a Pythagorean triple?

θ b a c                                                 

(a, b, c) ∈ N

3

a

2

+ b

2

= c

2

sin(θ) =

a

c

cos(θ) =

b

c

Primitive Pythagorean Triple : a Pythagorean triple (a, b, c) for which gcd(a, b, c) = 1.

0 500 1000 1500 2000 2500 3000 3500 4000 0 500 1000 1500 2000 2500 3000 3500 4000 ⇒ 0 500 1000 1500 2000 2500 3000 3500 4000 0 500 1000 1500 2000 2500 3000 3500 4000 π/4

Primitive Pythagorean triples with c ≤ 212 Only a subset fits in a table.

3. Primitive Pythagorean Triple Generation

 Barning-Hall ternary-tree structure:

           1 −2 2 2 −1 2 2 −2 3            ,            −1 2 2 2 −1 2 −2 2 3            ,            1 2 2 2 1 2 2 2 3           

3, 4, 5

5, 12, 13

15, 8, 17

21, 20, 29

 Several equivalent trees, easy to implement

 Proven to generate all primitive triples by increasing hypotenuse lengths [Bar63]

4. Primitive Pythagorean Triple Selection

 Only one triple per entry needed

 Division by c removed by incorporating it in polynomial approximations

Same hypotenuse c needed for all entries

⇒ Scale selected PPTs to the least common multiple of their hypotenuses

0 5 10 15 20 25 0 5 10 15 20 25 Stored PT Selected PPT π/4 0 5 10 15 20 25 30 35 40 45 50 0 10 20 30 40 50 60 70 80 90 100 Entry number Mean

A simple example for a 2-bit indexed table Number of PPTs/entry for a 7-bit indexed table: roughly 26100 combinations of 1 PPT/entry.

5. Exhaustive Search for a Small Common Hypotenuse

 Algorithm

1: n ← 4 2: repeat

3: Generate all PPTs (a, b, c) such that c ≤ 2n.

4: Search for the LCM k among all generated hypotenuses c.

5: n ← n + 1

6: until such a k is found

7: Build tabulated values (A, B, corr) for every entry.

 Results

p kmin n time (s) Triples Hypotenuses

3 425 9  1 86 66 4 5525 13  1 1404 889 5 160,225 18 0.2 42,328 24,228 6 1,698,385 21 7 335,344 179,632 7 6,569,225 23 31 1,347,953 686,701 8 > 227 > 27 > 6700? > 21,407,992 > 10,144,723

I Impossible to generate tables indexed by more than 7 bits.

I 8 to 10 bit-indexed tables desired to

optimize caching.

6. Heuristic Search

 Prime factorization of found common multiples k Prime factorization 425 52 · 17 5525 52 · 13 · 17 160,225 52 · 13 · 17 · 29 1,698,385 5 · 13 · 17 · 29 · 53 6,569,225 52 · 13 · 17 · 29 · 41

 Heuristic: store primitive Pythagorean triples satisfying c = Y i p ri i with I ri ∈ {0, 1} if pi 6= 5 I ri ∈ N∗ else I and pi ∈ P

where P is the set of Pythagorean primes ≤ 73: P = (5, 13, 17, 29, 37, 41, 53, 61, 73)

 Results

p kmin n time (s) triples hypotenuses

6 1,698,385 21 0.1 2171 66 7 6,569,225 23 0.4 3452 69 8 314,201,225 29 9.5 10,467 100 9 12,882,250,225 34 294 20,311 109 10 279,827,610,985 39 9393 33,056 110

I > 99 % less memory usage

I > 99 % time saved at generation

I Same tables for p ∈ [|3, 7|]

7. Theoretical Gains

 Comparison between three table-based range reductions, for p = 10. The number of memory accesses (MA) and the number of floating point operations (FLOP) are reported.

Solution Quick phase (66 bits) Accurate phase (150 bits) Table size (bytes) Tang 4 MA + 64 FLOP 6 MA + 241 FLOP 38640

Gal 3 MA + 53 FLOP 9 MA + 268 FLOP 57960 Proposed 3 MA + 53 FLOP 5 MA + 148 FLOP 32200

References

[Bar63] F. J. M. Barning. On pythagorean and quasi-pythagorean triangles and a generation process with the help of unimodular matrices. (Dutch) Math. Centrum Amsterdam Afd. Zuivere Wisk. ZW-001, 1963.

[GB91] S. Gal and B. Bachelis. An accurate elementary mathematical library for the IEEE floating point standard. ACM Trans. Math. Software, 17:26–45, 1991.

[Tan91] Ping Tak Peter Tang. Table-lookup algorithms for elementary functions and their error analysis. In Peter Kornerup and David W. Matula, editors, Proceedings: 10th IEEE Symposium on Com-puter Arithmetic: June 26–28, 1991, Grenoble, France, pages 232–236, pub-IEEE:adr, 1991. IEEE Computer Society Press.

Références

Documents relatifs

Later in the clinical course, measurement of newly established indicators of erythropoiesis disclosed in 2 patients with persistent anemia inappropriately low

Households’ livelihood and adaptive capacity in peri- urban interfaces : A case study on the city of Khon Kaen, Thailand.. Architecture,

3 Assez logiquement, cette double caractéristique se retrouve également chez la plupart des hommes peuplant la maison d’arrêt étudiée. 111-113) qu’est la surreprésentation

Et si, d’un côté, nous avons chez Carrier des contes plus construits, plus « littéraires », tendant vers la nouvelle (le titre le dit : jolis deuils. L’auteur fait d’une

la RCP n’est pas forcément utilisée comme elle devrait l’être, c'est-à-dire un lieu de coordination et de concertation mais elle peut être utilisée par certains comme un lieu

The change of sound attenuation at the separation line between the two zones, to- gether with the sound attenuation slopes, are equally well predicted by the room-acoustic diffusion

Si certains travaux ont abordé le sujet des dermatoses à l’officine sur un plan théorique, aucun n’a concerné, à notre connaissance, les demandes d’avis

Using the Fo¨rster formulation of FRET and combining the PM3 calculations of the dipole moments of the aromatic portions of the chromophores, docking process via BiGGER software,