MCPcopy Create free account
hub / github.com/bitsandbytes-foundation/bitsandbytes / dDequantizeNF4

Function dDequantizeNF4

csrc/cpu_ops.h:278–322  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

276}
277
278inline float dDequantizeNF4(unsigned char val) {
279
280 // the values for this tree was generated by test_normal_map_tree
281 // in the file tests/test_functional.py
282 if ((val & 0b1000) == 8)
283 if ((val & 0b0100) == 4) // 1
284 if ((val & 0b0010) == 2) // 11
285 if ((val & 0b0001) == 1) // 111
286 return 1.0f; //*1111
287 else
288 return 0.7229568362236023f; //*1110
289 else if ((val & 0b0001) == 1) // 110
290 return 0.5626170039176941f; //*1101
291 else
292 return 0.44070982933044434f; //*1100
293 else if ((val & 0b0010) == 2) // 10
294 if ((val & 0b0001) == 1) // 101
295 return 0.33791524171829224f; //*1011
296 else
297 return 0.24611230194568634f; //*1010
298 else if ((val & 0b0001) == 1) // 100
299 return 0.16093020141124725f; //*1001
300 else
301 return 0.07958029955625534f; //*1000
302
303 else if ((val & 0b0100) == 4) // 0
304 if ((val & 0b0010) == 2) // 01
305 if ((val & 0b0001) == 1) // 011
306 return 0.0f; //*0111
307 else
308 return -0.09105003625154495f; //*0110
309 else if ((val & 0b0001) == 1) // 010
310 return -0.18477343022823334f; //*0101
311 else
312 return -0.28444138169288635f; //*0100
313 else if ((val & 0b0010) == 2) // 00
314 if ((val & 0b0001) == 1) // 001
315 return -0.39491748809814453f; //*0011
316 else
317 return -0.5250730514526367f; //*0010
318 else if ((val & 0b0001) == 1) // 000
319 return -0.6961928009986877f; //*0001
320 else
321 return -1.0f; //*0000
322}
323
324template <typename T>
325void dequantizeBlockwise8bitCpu(

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected