#import <objc/objc.h>
#import <objc/Object.h>
#import <math.h>
@implementation TestObj
typedef struct d1
{
float interval;
float value;
int multiplierF;
int multiplierR;
float round;
} Data;
float floorHelper(float value, float roundingValue, int *multiplier);
float roundHelper(float value, float roundingValue, int *multiplier);
float floorHelper(float value, float roundingValue, int *multiplier) {
*multiplier
= (int)floor(value
/ roundingValue
); return *multiplier * roundingValue;
}
float roundHelper(float value, float roundingValue, int *multiplier)
{
*multiplier = (int)round(value / roundingValue);
return *multiplier * roundingValue;
}
int main()
{
float intervals[3] = {0.03, 0.05, 0.08};
float values[3] = {449.263824, 390.928070, 390.878082};
int intervalCount = sizeof(intervals)/sizeof(float);
int valueCount = sizeof(values)/sizeof(float);
int index = 0;
Data testDataResult[intervalCount * valueCount];
// loop thru the intervals
for (int i = 0; i < intervalCount; i++)
{
// loop thru values
for(int x = 0; x < valueCount; x++)
{
testDataResult[index].interval = intervals[i];
testDataResult[index].value = values[x];
testDataResult
[index
].
floor = floorHelper
(testDataResult
[index
].
value, testDataResult[index].interval,
&testDataResult[index].multiplierF);
testDataResult[index].round = roundHelper(testDataResult[index].value,
testDataResult[index].interval,
&testDataResult[index].multiplierR);
// printf("%f %f\n", intervals[i], values[x]);
index++;
}
}
// printf the test data
//
printf("Interval Value Division Floor Round\n"); for (int y = 0; y < sizeof(testDataResult)/sizeof(Data); y++)
{
printf("%-10.4f %-14f %9.3f %-6d %-10.2f %-6d %-10.2f", testDataResult
[y
].
interval, testDataResult
[y
].
value, testDataResult
[y
].
value / testDataResult
[y
].
interval, testDataResult
[y
].
multiplierF, testDataResult
[y
].
floor, testDataResult[y].multiplierR, testDataResult[y].round);
// indicate rows where the values equal
if (testDataResult
[y
].
round == testDataResult
[y
].
floor) {
}
else
{
}
if (((y + 1) % intervalCount) == 0)
{
}
}
return 0;
}
@end
I2ltcG9ydCA8b2JqYy9vYmpjLmg+CiNpbXBvcnQgPG9iamMvT2JqZWN0Lmg+CiNpbXBvcnQgPG1hdGguaD4KCkBpbXBsZW1lbnRhdGlvbiBUZXN0T2JqCgp0eXBlZGVmIHN0cnVjdCBkMQp7CglmbG9hdCBpbnRlcnZhbDsKCWZsb2F0IHZhbHVlOwoJCglpbnQgbXVsdGlwbGllckY7CglmbG9hdCBmbG9vcjsKCQoJaW50IG11bHRpcGxpZXJSOwoJZmxvYXQgcm91bmQ7Cn0gRGF0YTsKCmZsb2F0IGZsb29ySGVscGVyKGZsb2F0IHZhbHVlLCBmbG9hdCByb3VuZGluZ1ZhbHVlLCBpbnQgKm11bHRpcGxpZXIpOwpmbG9hdCByb3VuZEhlbHBlcihmbG9hdCB2YWx1ZSwgZmxvYXQgcm91bmRpbmdWYWx1ZSwgaW50ICptdWx0aXBsaWVyKTsKCmZsb2F0IGZsb29ySGVscGVyKGZsb2F0IHZhbHVlLCBmbG9hdCByb3VuZGluZ1ZhbHVlLCBpbnQgKm11bHRpcGxpZXIpIHsKICAgICptdWx0aXBsaWVyID0gKGludClmbG9vcih2YWx1ZSAvIHJvdW5kaW5nVmFsdWUpOwogICAgcmV0dXJuICptdWx0aXBsaWVyICogcm91bmRpbmdWYWx1ZTsKfQoKZmxvYXQgcm91bmRIZWxwZXIoZmxvYXQgdmFsdWUsIGZsb2F0IHJvdW5kaW5nVmFsdWUsIGludCAqbXVsdGlwbGllcikKewoJKm11bHRpcGxpZXIgPSAoaW50KXJvdW5kKHZhbHVlIC8gcm91bmRpbmdWYWx1ZSk7CglyZXR1cm4gKm11bHRpcGxpZXIgKiByb3VuZGluZ1ZhbHVlOwp9CgoKaW50IG1haW4oKQp7CgkKCQoJZmxvYXQgaW50ZXJ2YWxzWzNdID0gezAuMDMsIDAuMDUsIDAuMDh9OwoJZmxvYXQgdmFsdWVzWzNdID0gezQ0OS4yNjM4MjQsIDM5MC45MjgwNzAsIDM5MC44NzgwODJ9OwoJCglpbnQgaW50ZXJ2YWxDb3VudCA9IHNpemVvZihpbnRlcnZhbHMpL3NpemVvZihmbG9hdCk7CglpbnQgdmFsdWVDb3VudCA9IHNpemVvZih2YWx1ZXMpL3NpemVvZihmbG9hdCk7CgkKCWludCBpbmRleCA9IDA7CglEYXRhIHRlc3REYXRhUmVzdWx0W2ludGVydmFsQ291bnQgKiB2YWx1ZUNvdW50XTsKCQoJLy8gbG9vcCB0aHJ1IHRoZSBpbnRlcnZhbHMKCWZvciAoaW50IGkgPSAwOyBpIDwgaW50ZXJ2YWxDb3VudDsgaSsrKQoJewoJCS8vIGxvb3AgdGhydSB2YWx1ZXMKCQlmb3IoaW50IHggPSAwOyB4IDwgdmFsdWVDb3VudDsgeCsrKQoJCXsKCQkJdGVzdERhdGFSZXN1bHRbaW5kZXhdLmludGVydmFsID0gaW50ZXJ2YWxzW2ldOwoJCQl0ZXN0RGF0YVJlc3VsdFtpbmRleF0udmFsdWUgPSB2YWx1ZXNbeF07CgkJCQoJCQl0ZXN0RGF0YVJlc3VsdFtpbmRleF0uZmxvb3IgPSBmbG9vckhlbHBlcih0ZXN0RGF0YVJlc3VsdFtpbmRleF0udmFsdWUsIAoJCQkJCQkJCQkJCQkJCQl0ZXN0RGF0YVJlc3VsdFtpbmRleF0uaW50ZXJ2YWwsIAoJCQkJCQkJCQkJCQkJCQkmdGVzdERhdGFSZXN1bHRbaW5kZXhdLm11bHRpcGxpZXJGKTsKCQkJdGVzdERhdGFSZXN1bHRbaW5kZXhdLnJvdW5kID0gcm91bmRIZWxwZXIodGVzdERhdGFSZXN1bHRbaW5kZXhdLnZhbHVlLCAKCQkJCQkJCQkJCQkJCQkJdGVzdERhdGFSZXN1bHRbaW5kZXhdLmludGVydmFsLCAKCQkJCQkJCQkJCQkJCQkJJnRlc3REYXRhUmVzdWx0W2luZGV4XS5tdWx0aXBsaWVyUik7CgkJCS8vIHByaW50ZigiJWYgICAlZlxuIiwgaW50ZXJ2YWxzW2ldLCB2YWx1ZXNbeF0pOwoJCQlpbmRleCsrOwoJCX0KCX0KCQoJLy8gcHJpbnRmIHRoZSB0ZXN0IGRhdGEKCS8vIAoJcHJpbnRmKCJJbnRlcnZhbCAgIFZhbHVlICAgICAgICAgIERpdmlzaW9uICAgICBGbG9vciAgICAgICAgICAgICBSb3VuZFxuIik7Cglmb3IgKGludCB5ID0gMDsgeSA8IHNpemVvZih0ZXN0RGF0YVJlc3VsdCkvc2l6ZW9mKERhdGEpOyB5KyspCgl7CgkJcHJpbnRmKCIlLTEwLjRmICUtMTRmICU5LjNmICAgICUtNmQgJS0xMC4yZiAlLTZkICUtMTAuMmYiLCB0ZXN0RGF0YVJlc3VsdFt5XS5pbnRlcnZhbCwgdGVzdERhdGFSZXN1bHRbeV0udmFsdWUsIHRlc3REYXRhUmVzdWx0W3ldLnZhbHVlIC8gdGVzdERhdGFSZXN1bHRbeV0uaW50ZXJ2YWwsCgkJCQkJCQkJCXRlc3REYXRhUmVzdWx0W3ldLm11bHRpcGxpZXJGLCB0ZXN0RGF0YVJlc3VsdFt5XS5mbG9vciwKCQkJCQkJCQkJdGVzdERhdGFSZXN1bHRbeV0ubXVsdGlwbGllclIsIHRlc3REYXRhUmVzdWx0W3ldLnJvdW5kKTsKCQkKCQkvLyBpbmRpY2F0ZSByb3dzIHdoZXJlIHRoZSB2YWx1ZXMgZXF1YWwKCQlpZiAodGVzdERhdGFSZXN1bHRbeV0ucm91bmQgPT0gdGVzdERhdGFSZXN1bHRbeV0uZmxvb3IpCgkJewoJCQlwcmludGYoIlxuIik7CgkJfQoJCWVsc2UKCQl7CgkJCXByaW50ZigiIDwtLS0tIFxuIik7CgkJfQoJCQoJCWlmICgoKHkgKyAxKSAlIGludGVydmFsQ291bnQpID09IDApCgkJewoJCQlwcmludGYoIlxuIik7CgkJfQoJfQoJCglwcmludGYoIkRvbmUhXG4iKTsKCXJldHVybiAwOwp9CkBlbmQ=