00001 #ifndef Impala_Core_Array_Element_E1Log_h
00002 #define Impala_Core_Array_Element_E1Log_h
00003
00004 #include "Core/Array/Element/ArithTypes.h"
00005
00006 namespace Impala
00007 {
00008 namespace Core
00009 {
00010 namespace Array
00011 {
00012 namespace Element
00013 {
00014
00015
00016 inline Real64
00017 E1Log(Int32 v)
00018 {
00019 return ::log(Real64(v));
00020 }
00021
00022 inline Real64
00023 E1Log(Real64 v)
00024 {
00025 return ::log(v);
00026 }
00027
00028 inline Vec3Real64
00029 E1Log(const Vec3Int32& v)
00030 {
00031 return Vec3Real64(::log(Real64(v.X())), ::log(Real64(v.Y())),
00032 ::log(Real64(v.Z())));
00033 }
00034
00035 inline Vec3Real64
00036 E1Log(const Vec3Real64& v)
00037 {
00038 return Vec3Real64(::log(v.X()), ::log(v.Y()), ::log(v.Z()));
00039 }
00040
00041 inline Complex64
00042 E1Log(const Complex64& v)
00043 {
00044 Real64 re = v.X();
00045 Real64 im = v.Y();
00046 Real64 mag = ::sqrt(re*re+im*im);
00047
00048 return Complex64(::log(mag), ::atan(re/im));
00049 }
00050
00051 }
00052 }
00053 }
00054 }
00055
00056 #endif