You're reading an pre-release version of this documentation.
For the latest stable release version, please have a look at master.

Program Listing for File quantize.h

Return to documentation for file (include/quantize.h)

#ifndef _QUANTIZE_H_
#define _QUANTIZE_H_

#ifdef __cplusplus
extern "C" {
#endif

#include "nn_api.h"

#define BITS_PER_BYTE  8

unsigned int type_get_bytes(const int type);


int get_stride(int data_format);


unsigned int type_get_bits(const int type);


unsigned int get_element_num(const uint32_t *sizes, unsigned int num_of_dims);

uint16_t fp32_to_fp16(float f);


void asym_affine_u8(uint8_t *out_ptr, float value, float q_scale, int q_zero);


void dynamic_fix_point_i8(int8_t *out_ptr, float value, int fl);


void dynamic_fix_point_i16(int16_t *out_ptr, float value, int fl);


int quantize_vector(uint8_t *output, const float *input, pnna_buffer_create_params_t params);


int dtype_to_float32_scalar(float *dst, unsigned char *src, const int data_format,
                            const int quant_format, const signed char fixed_point_pos,
                            const float scale, const int zeroPoint);


int float32_to_dtype_scalar(unsigned char *dst, float src, const int data_format,
                            const int quant_format, const signed char fl,
                            const float scale, const int zerop);


void asym_affine_vector(uint8_t *output, const float *input, const int size, const int stride,
                        const float scale, const int zeropoint, int data_type);


void dynamic_fix_point_vector(uint8_t *output, const float *input, const int size,
                              const int stride, const int fl, int data_type);


void asym_affine_inverse_vector(float *output, void *input, const int size,
                                const float scale, const int zeropoint, int data_type);


void dynamic_fix_point_inverse_vector(float *output, void *input,
                                      const int size, const int fl, int data_type);


void float_to_fp16_vector(uint8_t *output, const float *input,
                          const int size, const int stride);


void fp16_to_float_vector(float *output, short *input, const int size);


int get_input_quantize_param(pnna_buffer_create_params_t *params,
                             pnna_network network, uint32_t index);


int get_output_quantize_param(pnna_buffer_create_params_t *params,
                              pnna_network network, uint32_t index);


uint32_t get_data_size(const uint32_t *sizes, uint32_t num_of_dims, int data_type);


int nn_dequantize_vector(buffer_t *output_data, buffer_t *input_data,
                         pnna_buffer_create_params_t *qp, uint32_t counts);

#ifdef __cplusplus
}
#endif

#endif // !_QUANTIZE_H_