49 lines
941 B
C
49 lines
941 B
C
#include "trainlog/bodyviz.h"
|
|
|
|
#include <math.h>
|
|
#include <stddef.h>
|
|
|
|
TrainlogStatus trainlog_body_index100(
|
|
double baseline,
|
|
double value,
|
|
double *output_index
|
|
)
|
|
{
|
|
if (output_index == NULL ||
|
|
!isfinite(baseline) ||
|
|
!isfinite(value) ||
|
|
baseline <= 0.0 ||
|
|
value <= 0.0) {
|
|
return TRAINLOG_STATUS_INVALID_ARGUMENT;
|
|
}
|
|
|
|
*output_index = (value / baseline) * 100.0;
|
|
return TRAINLOG_STATUS_OK;
|
|
}
|
|
|
|
TrainlogStatus trainlog_body_percent_change(
|
|
double baseline,
|
|
double value,
|
|
double *output_percent
|
|
)
|
|
{
|
|
double index;
|
|
TrainlogStatus status;
|
|
|
|
if (output_percent == NULL) {
|
|
return TRAINLOG_STATUS_INVALID_ARGUMENT;
|
|
}
|
|
|
|
status = trainlog_body_index100(
|
|
baseline,
|
|
value,
|
|
&index
|
|
);
|
|
|
|
if (status != TRAINLOG_STATUS_OK) {
|
|
return status;
|
|
}
|
|
|
|
*output_percent = index - 100.0;
|
|
return TRAINLOG_STATUS_OK;
|
|
}
|