implementation< ball_additive, 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_additive, IV, ball_infinities< BV > >

Definition at line 41 of file ball_infinities.hpp.


Member Typedef Documentation

typedef implementation<ball_additive,BV> Fallback

Definition at line 42 of file ball_infinities.hpp.

typedef implementation<ball_rounding,BV> Rnd

Definition at line 43 of file ball_infinities.hpp.


Member Function Documentation

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

Definition at line 70 of file ball_infinities.hpp.

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

00070                                            {
00071   if (is_finite (z1) && is_finite (z2)) Fallback::add (d, z1, z2);
00072   else add (d, z1, Ball (z2));
00073 }

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

Definition at line 64 of file ball_infinities.hpp.

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

00064                                            {
00065   if (is_finite (z1) && is_finite (z2)) Fallback::add (d, z1, z2);
00066   else add (d, Ball (z1), z2);
00067 }

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

Definition at line 52 of file ball_infinities.hpp.

References mmx::add(), Ball, mmx::C, mmx::center(), Fuzz, mmx::is_finite(), mmx::is_fuzz(), mmx::is_infinite(), mmx::is_nan(), Nan, and Projective.

00052                                               {
00053   if (is_finite (z1) && is_finite (z2)) Fallback::add (d, z1, z2);
00054   else if (is_nan (z1) || is_nan (z2)) d= Nan (Ball);
00055   else if (is_fuzz (z1) || is_fuzz (z2)) d= Fuzz (Ball);
00056   else if (is_infinite (z1) && is_infinite (z2)) {
00057     if (Projective (C) || center (z1) != center (z2)) d= Fuzz (Ball);
00058     else d= z1;
00059   }
00060   else d= (is_infinite (z1)? z1: z2);
00061 }

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

Definition at line 46 of file ball_infinities.hpp.

References mmx::is_finite(), mmx::is_infinite(), and mmx::neg().

00046                              {
00047   if (is_finite (z) || is_infinite (z)) Fallback::neg (d, z);
00048   else d= z;
00049 }

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

Definition at line 94 of file ball_infinities.hpp.

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

00094                                            {
00095   if (is_finite (z1) && is_finite (z2)) Fallback::sub (d, z1, z2);
00096   else sub (d, z1, Ball (z2));
00097 }

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

Definition at line 88 of file ball_infinities.hpp.

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

00088                                            {
00089   if (is_finite (z1) && is_finite (z2)) Fallback::sub (d, z1, z2);
00090   else sub (d, Ball (z1), z2);
00091 }

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

Definition at line 76 of file ball_infinities.hpp.

References Ball, mmx::C, mmx::center(), Fuzz, mmx::is_finite(), mmx::is_fuzz(), mmx::is_infinite(), mmx::is_nan(), Nan, Projective, and mmx::sub().

00076                                               {
00077   if (is_finite (z1) && is_finite (z2)) Fallback::sub (d, z1, z2);
00078   else if (is_nan (z1) || is_nan (z2)) d= Nan (Ball);
00079   else if (is_fuzz (z1) || is_fuzz (z2)) d= Fuzz (Ball);
00080   else if (is_infinite (z1) && is_infinite (z2)) {
00081     if (Projective (C) || center (z1) == center (z2)) d= Fuzz (Ball);
00082     else d= z1;
00083   }
00084   else d= (is_infinite (z1)? z1: -z2);
00085 }


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

Generated on 6 Dec 2012 for numerix by  doxygen 1.6.1