32 std::string src_lower=src;
33 std::transform(src_lower.begin(), src_lower.end(),
34 src_lower.begin(), ::tolower);
36 const char *p=src_lower.c_str();
38 std::string str_whole_number,
46 if(src_lower.size()>=2 && src_lower[0]==
'0' && src_lower[1]==
'x')
54 while(*p!=
'.' && *p!=0 && *p!=
'p')
65 while(*p!=0 && *p!=
'p')
67 str_fraction_part+=*p;
80 while(*p != 0 && *p !=
'f' && *p !=
'l' && *p !=
'w' && *p !=
'q' &&
81 *p !=
'd' && *p !=
'b')
87 std::string str_number=str_whole_number+
94 if(str_number.empty())
99 if(str_exponent.empty())
105 exponent-=str_fraction_part.size()*4;
110 while(*p!=
'.' && *p!=0 && *p!=
'e' &&
111 *p!=
'f' && *p!=
'l' &&
112 *p!=
'w' && *p!=
'q' && *p!=
'd' &&
115 str_whole_number+=*p;
124 while(*p != 0 && *p !=
'e' && *p !=
'f' && *p !=
'l' && *p !=
'w' &&
125 *p !=
'q' && *p !=
'd' && *p !=
'i' && *p !=
'j' && *p !=
'b')
127 str_fraction_part+=*p;
140 while(*p != 0 && *p !=
'f' && *p !=
'l' && *p !=
'w' && *p !=
'q' &&
141 *p !=
'd' && *p !=
'i' && *p !=
'j' && *p !=
'b')
147 std::string str_number=str_whole_number+
150 if(str_number.empty())
155 if(str_exponent.empty())
173 if(strcmp(p,
"f16") == 0 || strcmp(p,
"bf16") == 0)
175 else if(strcmp(p,
"f32")==0)
177 else if(strcmp(p,
"f32x")==0)
179 else if(strcmp(p,
"f64")==0)
181 else if(strcmp(p,
"f64x")==0)
183 else if(strcmp(p,
"f128")==0)
185 else if(strcmp(p,
"f128x")==0)
195 else if(*p==
'i' || *p==
'j')