MCPcopy Create free account
hub / github.com/creatale/node-dv / icvDoubleToString

Function icvDoubleToString

deps/opencv/modules/core/src/persistence.cpp:847–884  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

845
846
847static char*
848icvDoubleToString( char* buf, double value )
849{
850 Cv64suf val;
851 unsigned ieee754_hi;
852
853 val.f = value;
854 ieee754_hi = (unsigned)(val.u >> 32);
855
856 if( (ieee754_hi & 0x7ff00000) != 0x7ff00000 )
857 {
858 int ivalue = cvRound(value);
859 if( ivalue == value )
860 sprintf( buf, "%d.", ivalue );
861 else
862 {
863 static const char* fmt = "%.16e";
864 char* ptr = buf;
865 sprintf( buf, fmt, value );
866 if( *ptr == '+' || *ptr == '-' )
867 ptr++;
868 for( ; cv_isdigit(*ptr); ptr++ )
869 ;
870 if( *ptr == ',' )
871 *ptr = '.';
872 }
873 }
874 else
875 {
876 unsigned ieee754_lo = (unsigned)val.u;
877 if( (ieee754_hi & 0x7fffffff) + (ieee754_lo != 0) > 0x7ff00000 )
878 strcpy( buf, ".Nan" );
879 else
880 strcpy( buf, (int)ieee754_hi < 0 ? "-.Inf" : ".Inf" );
881 }
882
883 return buf;
884}
885
886
887static char*

Callers 3

icvYMLWriteRealFunction · 0.85
icvXMLWriteRealFunction · 0.85
cvWriteRawDataFunction · 0.85

Calls 2

cvRoundFunction · 0.85
cv_isdigitFunction · 0.85

Tested by

no test coverage detected