--- title: "Domain-to-range ratio" chunk: 1/1 source: "https://en.wikipedia.org/wiki/Domain-to-range_ratio" category: "reference" tags: "science, encyclopedia" date_saved: "2026-05-05T12:04:48.191214+00:00" instance: "kb-cron" --- The domain-to-range ratio (DRR) is a ratio which describes how the number of outputs corresponds to the number of inputs of a given logical function or software component. The domain-to-range ratio is a mathematical ratio of cardinality between the set of the function's possible inputs (the domain) and the set of possible outputs (the range). For a function defined on a domain, D {\displaystyle D} , and a range, R {\displaystyle R} , the domain-to-range ratio is given as: D R R = | D | | R | {\displaystyle DRR={\frac {|D|}{|R|}}} It can be used to measure the risk of missing potential errors when testing the range of outputs alone. == Example == Consider the function isEven() below, which checks the parity of an unsigned short number x {\displaystyle x} , any value between 0 {\displaystyle 0} and 65 , 536 {\displaystyle 65,536} , and yields a boolean value which corresponds to whether x {\displaystyle x} is even or odd. This solution takes advantage of the fact that integer division in programming typically rounds towards zero. Because x {\displaystyle x} can be any value from 0 {\displaystyle 0} to 65 , 535 {\displaystyle 65,535} , the function's domain has a cardinality of 65 , 536 {\displaystyle 65,536} . The function yields 0 {\displaystyle 0} , if x {\displaystyle x} is even, or 1 {\displaystyle 1} , if x {\displaystyle x} is odd. This is expressed as the range { 0 ; 1 } {\displaystyle \{0;1\}} , which has a cardinality of 2 {\displaystyle 2} . Therefore, the domain-to-range ratio of isEven() is given by: D R R = 65 , 536 2 = 32 , 768 {\displaystyle DRR={65,536 \over 2}=32,768} Here, the domain-to-range ratio indicates that this function would require a comparatively large number of tests to find errors. If a test program attempts every possible value of x {\displaystyle x} in order from 0 {\displaystyle 0} to 65 , 535 {\displaystyle 65,535} , the program would have to perform 32 , 768 {\displaystyle 32,768} tests for each of the two possible outputs in order to find errors or edge cases. Because errors in functions with a high domain-to-range ratio are difficult to identify via manual testing or methods which reduce the number of tested inputs, such as orthogonal array testing or all-pairs testing, more computationally complex techniques may be used, such as fuzzing or static program analysis, to find errors. == See also == Software testing Formal verification == References ==