1/* 2 * Copyright 2002-2007, Haiku Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Author: 6 * Daniel Reinhold, danielre@users.sf.net 7 */ 8 9 10#include <stdlib.h> 11 12 13div_t 14div(int numerator, int denominator) 15{ 16 div_t val; 17 18 val.quot = numerator / denominator; 19 val.rem = numerator - denominator * val.quot; 20 21 if (val.rem > 0 && val.quot < 0) { 22 val.rem -= denominator; 23 ++val.quot; 24 } 25 26 return val; 27} 28 29 30ldiv_t 31ldiv(long numerator, long denominator) 32{ 33 ldiv_t val; 34 35 val.quot = numerator / denominator; 36 val.rem = numerator - denominator * val.quot; 37 38 if (val.rem > 0 && val.quot < 0) { 39 val.rem -= denominator; 40 ++val.quot; 41 } 42 43 return val; 44} 45 46 47lldiv_t 48lldiv(long long numerator, long long denominator) 49{ 50 lldiv_t val; 51 52 val.quot = numerator / denominator; 53 val.rem = numerator - denominator * val.quot; 54 55 if (val.rem > 0 && val.quot < 0) { 56 val.rem -= denominator; 57 ++val.quot; 58 } 59 60 return val; 61} 62