169{
170 int exposant,i;
171 unsigned int mantisse1, mantisse2;
172 double dmantisse;
173 for(i=0;i<len;i++)
174 {
175 if (reel[i] < 0. )
176 {
177 if (reel[i] > -4.e-308 ){
178
179 octet[i][0] = 0x80;
180 octet[i][1] = 0x00;
181 octet[i][2] = 0x00;
182 octet[i][3] = 0x00;
183 octet[i][4] = 0x00;
184 octet[i][5] = 0x00;
185 octet[i][6] = 0x00;
186 octet[i][7] = 0x00;
187 continue;
188 } else if( reel[i] < -1.e+308){
189
190 octet[i][0] = 0xff;
191 octet[i][1] = 0xf0;
192 octet[i][2] = 0x00;
193 octet[i][3] = 0x00;
194 octet[i][4] = 0x00;
195 octet[i][5] = 0x00;
196 octet[i][6] = 0x00;
197 octet[i][7] = 0x00;
198 continue;
199 } else {
200 dmantisse = (frexp(-reel[i],&exposant) - 0.5)*9.0071992547409920E15;
201
202 exposant += 1022;
203 octet[i][0] = ((exposant & 0x7ff) >> 4) | 128;
204 }
205 }
206 else
207 {
208 if (reel[i] < 4.e-308 ){
209
210 octet[i][0] = 0x00;
211 octet[i][1] = 0x00;
212 octet[i][2] = 0x00;
213 octet[i][3] = 0x00;
214 octet[i][4] = 0x00;
215 octet[i][5] = 0x00;
216 octet[i][6] = 0x00;
217 octet[i][7] = 0x00;
218 continue;
219 } else if( reel[i] > 1.e+308){
220
221 octet[i][0] = 0x7f;
222 octet[i][1] = 0xf0;
223 octet[i][2] = 0x00;
224 octet[i][3] = 0x00;
225 octet[i][4] = 0x00;
226 octet[i][5] = 0x00;
227 octet[i][6] = 0x00;
228 octet[i][7] = 0x00;
229 continue;
230
231 } else {
232 dmantisse = (frexp(reel[i],&exposant) - 0.5)*9.0071992547409920E15;
233
234 exposant += 1022;
235 octet[i][0] = (exposant & 0x7ff) >> 4;
236 }
237 }
238
239
240
241
242 mantisse1 = (unsigned int) (dmantisse / 4.294967296E9);
243 mantisse2 = (unsigned int) (dmantisse - (double)mantisse1 * 4.294967296E9);
244 octet[i][1] = ((exposant & 0x0f) << 4) | ((mantisse1 >> 16) & 0x0f);
245 octet[i][2] = (mantisse1 >> 8) & 0xff ;
246 octet[i][3] = mantisse1 & 0xff ;
247 octet[i][4] = (mantisse2 >> 24) & 0xff ;
248 octet[i][5] = (mantisse2 >> 16) & 0xff ;
249 octet[i][6] = (mantisse2 >> 8) & 0xff ;
250 octet[i][7] = mantisse2 & 0xff ;
251 }
252}