cake
/
libg1m
Archived
1
0
Fork 0
This repository has been archived on 2024-03-16. You can view files and clone it, but cannot push or open issues or pull requests.
libg1m/src/bcd/get_exponent.c

39 lines
1.2 KiB
C

/* ************************************************************************** */
/* _____ _ */
/* bcd/get_exponent.c |_ _|__ _ _| |__ ___ _ _ */
/* | Project: libg1m | |/ _ \| | | | '_ \ / _ \ | | | */
/* | | (_) | |_| | | | | __/ |_| | */
/* By: thomas <thomas@touhey.fr> |_|\___/ \__,_|_| |_|\___|\__, |.fr */
/* Last updated: 2016/11/21 16:14:08 |___/ */
/* */
/* ************************************************************************** */
#include <libg1m/internals/bcd.h>
/**
* g1m_bcd_get_exponent:
* Get exponent.
*/
int g1m_bcd_get_exponent(struct bcd *bcd)
{
unsigned char *bytes = bcd->BCDval;
int exp = upr(0) * 100 + lwr(0) * 10 + upr(1);
return ((exp % 500) - 99);
}
/**
* g1m_bcd_get_exponent_neg:
* Get exponent and if it is negative.
*/
int g1m_bcd_get_exponent_neg(struct bcd *bcd, int *neg)
{
unsigned char *bytes = bcd->BCDval;
*neg = 0;
int exp = upr(0) * 100 + lwr(0) * 10 + upr(1);
if (exp >= 500) exp -= 500, *neg = 1;
return (exp - 99);
}