implementation< ball_multiplicative, IV, ball_infinities< BV > > Struct Template Reference

#include <ball_infinities.hpp>

List of all members.

Public Types

Static Public Member Functions


Detailed Description

template<typename IV, typename BV>
struct mmx::implementation< ball_multiplicative, IV, ball_infinities< BV > >

Definition at line 106 of file ball_infinities.hpp.


Member Typedef Documentation

typedef implementation<ball_multiplicative,BV> Fallback

Definition at line 107 of file ball_infinities.hpp.

typedef implementation<ball_rounding,BV> Rnd

Definition at line 108 of file ball_infinities.hpp.


Member Function Documentation

static void div ( ball< C, R, V > &  d,
const ball< C, R, V > &  z1,
const C z2 
) [inline, static]

Definition at line 192 of file ball_infinities.hpp.

References Ball, mmx::div(), and mmx::is_finite().

00192                                            {
00193   if (is_finite (z1) && is_finite (z2)) Fallback::div (d, z1, z2);
00194   else div (d, z1, Ball (z2));
00195 }

static void div ( ball< C, R, V > &  d,
const C z1,
const ball< C, R, V > &  z2 
) [inline, static]

Definition at line 186 of file ball_infinities.hpp.

References Ball, mmx::div(), and mmx::is_finite().

00186                                            {
00187   if (is_finite (z1) && is_finite (z2)) Fallback::div (d, z1, z2);
00188   else div (d, Ball (z1), z2);
00189 }

static void div ( ball< C, R, V > &  d,
const ball< C, R, V > &  z1,
const ball< C, R, V > &  z2 
) [inline, static]

Definition at line 169 of file ball_infinities.hpp.

References Ball, mmx::C, mmx::center(), mmx::div(), Fuzz, Infinity, mmx::is_finite(), mmx::is_fuzz(), mmx::is_infinite(), mmx::is_nan(), mmx::is_zero(), Nan, Projective, and mmx::radius().

00169                                               {
00170   if (is_zero (z2)) d= Nan (Ball);
00171   else if (is_finite (z1) && is_finite (z2)) Fallback::div (d, z1, z2);
00172   else if (is_nan (z1) || is_nan (z2)) d= Nan (Ball);
00173   else if (is_fuzz (z1)) d= Fuzz (Ball);
00174   else if (is_infinite (z1)) {
00175     if (is_infinite (z2)) d= Fuzz (Ball);
00176     else if (Projective (C)) d= Infinity (Ball);
00177     else {
00178       center (d)= center (z1) / center (z2);
00179       radius (d)= 0;
00180     }
00181   }
00182   else d= 0;
00183 }

static void invert ( ball< C, R, V > &  d,
const C z 
) [inline, static]

Definition at line 161 of file ball_infinities.hpp.

References Ball, mmx::invert(), mmx::is_finite(), mmx::is_nan(), mmx::is_zero(), and Nan.

00161                              {
00162   if (is_zero (z)) d= Nan (Ball);
00163   else if (is_finite (z)) Fallback::invert (d, z);
00164   else if (is_nan (z)) d= Nan (Ball);
00165   else d= 0;
00166 }

static void invert ( ball< C, R, V > &  d,
const ball< C, R, V > &  z 
) [inline, static]

Definition at line 153 of file ball_infinities.hpp.

References Ball, mmx::invert(), mmx::is_finite(), mmx::is_nan(), mmx::is_zero(), and Nan.

00153                                 {
00154   if (is_zero (z)) d= Nan (Ball);
00155   else if (is_finite (z)) Fallback::invert (d, z);
00156   else if (is_nan (z)) d= Nan (Ball);
00157   else d= 0;
00158 }

static void mul ( ball< C, R, V > &  d,
const ball< C, R, V > &  z1,
const C z2 
) [inline, static]

Definition at line 140 of file ball_infinities.hpp.

References Ball, mmx::is_finite(), and mmx::mul().

00140                                            {
00141   if (is_finite (z1) && is_finite (z2)) Fallback::mul (d, z1, z2);
00142   else mul (d, z1, Ball (z2));
00143 }

static void mul ( ball< C, R, V > &  d,
const C z1,
const ball< C, R, V > &  z2 
) [inline, static]

Definition at line 134 of file ball_infinities.hpp.

References Ball, mmx::is_finite(), and mmx::mul().

00134                                            {
00135   if (is_finite (z1) && is_finite (z2)) Fallback::mul (d, z1, z2);
00136   else mul (d, Ball (z1), z2);
00137 }

static void mul ( ball< C, R, V > &  d,
const ball< C, R, V > &  z1,
const ball< C, R, V > &  z2 
) [inline, static]

Definition at line 111 of file ball_infinities.hpp.

References Ball, mmx::C, mmx::center(), Fuzz, Infinity, mmx::is_finite(), mmx::is_fuzz(), mmx::is_infinite(), mmx::is_nan(), mmx::is_zero(), mmx::mul(), Nan, Projective, and mmx::radius().

00111                                               {
00112   if (is_finite (z1) && is_finite (z2)) Fallback::mul (d, z1, z2);
00113   else if (is_nan (z1) || is_nan (z2)) d= Nan (Ball);
00114   else if (is_fuzz (z1) || is_fuzz (z2)) d= Fuzz (Ball);
00115   else if (is_infinite (z1)) {
00116     if (is_zero (z2)) d= Fuzz (Ball);
00117     else if (Projective (C)) d= Infinity (Ball);
00118     else {
00119       center (d)= center (z1) * center (z2);
00120       radius (d)= 0;
00121     }
00122   }
00123   else {
00124     if (is_zero (z1)) d= Fuzz (Ball);
00125     else if (Projective (C)) d= Infinity (Ball);
00126     else {
00127       center (d)= center (z1) * center (z2);
00128       radius (d)= 0;
00129     }
00130   }
00131 }

static void square ( ball< C, R, V > &  d,
const ball< C, R, V > &  z 
) [inline, static]

Definition at line 146 of file ball_infinities.hpp.

References Ball, Infinity, mmx::is_finite(), mmx::is_infinite(), and mmx::square().

00146                                 {
00147   if (is_finite (z)) Fallback::square (d, z);
00148   else if (is_infinite (z)) d= Infinity (Ball);
00149   else d= z;
00150 }


The documentation for this struct was generated from the following file:

Generated on 6 Dec 2012 for numerix by  doxygen 1.6.1