{"group":{"id":1,"name":"Community","lockable":false,"created_at":"2012-01-18T18:02:15.000Z","updated_at":"2025-12-14T01:33:56.000Z","description":"Problems submitted by members of the MATLAB Central community.","is_default":true,"created_by":161519,"badge_id":null,"featured":false,"trending":false,"solution_count_in_trending_period":0,"trending_last_calculated":"2025-12-14T00:00:00.000Z","image_id":null,"published":true,"community_created":false,"status_id":2,"is_default_group_for_player":false,"deleted_by":null,"deleted_at":null,"restored_by":null,"restored_at":null,"description_opc":null,"description_html":null,"published_at":null},"problems":[{"id":44690,"title":"Comparison of floating-point numbers (doubles)","description":"\u003chttps://au.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html Floating-point numbers\u003e cannot generally be represented exactly, so it is usually inappropriate to test for 'equality' between two floating-point numbers.  Rather, it is generally appropriate to check whether the difference between the two numbers is sufficiently small that they can be considered practically equal.  (In other words, so close in value that any differences could be explained by inherent limitations of computations using floating-point numbers.) \r\n \r\nBased on two scalar inputs of type \u003chttps://au.mathworks.com/help/matlab/ref/double.html double\u003e, namely |A| and |B|, you must return a scalar \u003chttps://au.mathworks.com/help/matlab/ref/logical.html logical\u003e output set to \u003chttps://au.mathworks.com/help/matlab/ref/true.html |true|\u003e if the difference in magnitude between |A| and |B| is 'small', or otherwise set to \u003chttps://au.mathworks.com/help/matlab/ref/false.html |false|\u003e.  \r\n\r\nFor _this_ problem \"small\" shall be defined as no more than ten times _ε_, in which _ε_ is the larger of _ε_₁ \u0026 _ε_₂, and _ε_₁ is the \u003chttps://au.mathworks.com/help/matlab/ref/eps.html floating-point precision\u003e with which |A| is represented, and _ε_₂ is the precision with which |B| is represented.  \r\n\r\nEXAMPLE:\r\n\r\n  % Input\r\n  A = 0\r\n  B = 1E-50\r\n\r\n  % Output\r\n  practicallyEqual = false\r\n\r\nExplanation:  |A| is represented with a precision of _ε_₁ = 2⁻¹⁰⁷⁴, whereas |B| is represented with a precision of _ε_₂ = 2⁻²¹⁹.  Thus _ε_ = 2⁻²¹⁹, and the threshold is 10×2⁻²¹⁹.  The difference between |A| and |B| is 1×10⁻⁵⁰, and this difference exceeds the threshold.  Thus |A| and |B| are _not_ practically equal in this example.  \r\n\r\nRELATED PROBLEMS:\r\n\r\n* \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44691 Problem 44691. Comparison of floating-point numbers (singles)\u003e\r\n* \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44631 Problem 44631: Make your own Test Suite (part 0)\u003e\r\n* \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44513 Problem 44513:  Add all the numbers between two limits (inclusive)\u003e","description_html":"\u003cp\u003e\u003ca href = \"https://au.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html\"\u003eFloating-point numbers\u003c/a\u003e cannot generally be represented exactly, so it is usually inappropriate to test for 'equality' between two floating-point numbers.  Rather, it is generally appropriate to check whether the difference between the two numbers is sufficiently small that they can be considered practically equal.  (In other words, so close in value that any differences could be explained by inherent limitations of computations using floating-point numbers.)\u003c/p\u003e\u003cp\u003eBased on two scalar inputs of type \u003ca href = \"https://au.mathworks.com/help/matlab/ref/double.html\"\u003edouble\u003c/a\u003e, namely \u003ctt\u003eA\u003c/tt\u003e and \u003ctt\u003eB\u003c/tt\u003e, you must return a scalar \u003ca href = \"https://au.mathworks.com/help/matlab/ref/logical.html\"\u003elogical\u003c/a\u003e output set to \u003ca href = \"https://au.mathworks.com/help/matlab/ref/true.html\"\u003e\u003ctt\u003etrue\u003c/tt\u003e\u003c/a\u003e if the difference in magnitude between \u003ctt\u003eA\u003c/tt\u003e and \u003ctt\u003eB\u003c/tt\u003e is 'small', or otherwise set to \u003ca href = \"https://au.mathworks.com/help/matlab/ref/false.html\"\u003e\u003ctt\u003efalse\u003c/tt\u003e\u003c/a\u003e.\u003c/p\u003e\u003cp\u003eFor \u003ci\u003ethis\u003c/i\u003e problem \"small\" shall be defined as no more than ten times \u003ci\u003eε\u003c/i\u003e, in which \u003ci\u003eε\u003c/i\u003e is the larger of \u003ci\u003eε\u003c/i\u003e₁ \u0026 \u003ci\u003eε\u003c/i\u003e₂, and \u003ci\u003eε\u003c/i\u003e₁ is the \u003ca href = \"https://au.mathworks.com/help/matlab/ref/eps.html\"\u003efloating-point precision\u003c/a\u003e with which \u003ctt\u003eA\u003c/tt\u003e is represented, and \u003ci\u003eε\u003c/i\u003e₂ is the precision with which \u003ctt\u003eB\u003c/tt\u003e is represented.\u003c/p\u003e\u003cp\u003eEXAMPLE:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e% Input\r\nA = 0\r\nB = 1E-50\r\n\u003c/pre\u003e\u003cpre class=\"language-matlab\"\u003e% Output\r\npracticallyEqual = false\r\n\u003c/pre\u003e\u003cp\u003eExplanation:  \u003ctt\u003eA\u003c/tt\u003e is represented with a precision of \u003ci\u003eε\u003c/i\u003e₁ = 2⁻¹⁰⁷⁴, whereas \u003ctt\u003eB\u003c/tt\u003e is represented with a precision of \u003ci\u003eε\u003c/i\u003e₂ = 2⁻²¹⁹.  Thus \u003ci\u003eε\u003c/i\u003e = 2⁻²¹⁹, and the threshold is 10×2⁻²¹⁹.  The difference between \u003ctt\u003eA\u003c/tt\u003e and \u003ctt\u003eB\u003c/tt\u003e is 1×10⁻⁵⁰, and this difference exceeds the threshold.  Thus \u003ctt\u003eA\u003c/tt\u003e and \u003ctt\u003eB\u003c/tt\u003e are \u003ci\u003enot\u003c/i\u003e practically equal in this example.\u003c/p\u003e\u003cp\u003eRELATED PROBLEMS:\u003c/p\u003e\u003cul\u003e\u003cli\u003e\u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44691\"\u003eProblem 44691. Comparison of floating-point numbers (singles)\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44631\"\u003eProblem 44631: Make your own Test Suite (part 0)\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44513\"\u003eProblem 44513:  Add all the numbers between two limits (inclusive)\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e","function_template":"function practicallyEqual = compareDoubles(A, B)\r\n    \r\nend","test_suite":"%% No silly stuff\r\nassessFunctionAbsence({'regexp', 'regexpi'}, 'FileName','compareDoubles.m')\r\n\r\nRE = regexp(fileread('compareDoubles.m'), '\\w+', 'match');\r\ntabooWords = {'ans'};\r\ntestResult = cellfun( @(z) ismember(z, tabooWords), RE );\r\nmsg = ['Please do not do that in your code!' char([10 13]) ...\r\n    'Found: ' strjoin(RE(testResult)) '.' char([10 13]) ...\r\n    'Banned word.' char([10 13])];\r\nassert(~any(  cellfun( @(z) ismember(z, tabooWords), RE )  ), msg)\r\n\r\n%% Zero and small positive numbers\r\nA = 0;\r\n% Note:  realmin ≈ 2.2251E-308\r\nbVec   = [1E-50, 1E-300, 2.2E-308, 1E-322, 9E-323, 6E-323, 5E-323, 4E-323, 2E-323, 9E-324, 5E-324, 0];\r\nansVec = [false, false,  false,    false,  false,  false,   true,   true,  true,   true,   true,   true];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareDoubles(A, B);\r\n    practicallyEqual2 = compareDoubles(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n%% Zero and small negative numbers\r\nA = 0;\r\nbVec   = -[1E-50, 1E-300, 2.2E-308, 1E-322, 9E-323, 6E-323, 5E-323, 4E-323, 2E-323, 9E-324, 5E-324];\r\nansVec =  [false, false,  false,    false,  false,  false,   true,   true,  true,   true,   true];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareDoubles(A, B);\r\n    practicallyEqual2 = compareDoubles(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n\r\n%% Both roughly equal to positive one\r\nA = 1.1 + rand()/2;\r\nbVec   = A  +  2.^[-2 : -0.5 : -102];\r\nansVec = [repelem(false, 94) repelem(true, 107)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareDoubles(A, B);\r\n    practicallyEqual2 = compareDoubles(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n%% Both roughly equal to negative one hundred\r\nA = -104 + rand();\r\nbVec   = A  +  2.^[+2 : -0.5 : -98];\r\nansVec = [repelem(false, 90) repelem(true, 111)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareDoubles(A, B);\r\n    practicallyEqual2 = compareDoubles(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n\r\n%% Both roughly equal to positive one trillion (long scale) https://en.wikipedia.org/wiki/Long_and_short_scales\r\nA = 1E18 + randi(1E14);\r\nbVec   = A  +  2.^[57 : -0.5 : -43];\r\nansVec = [repelem(false, 94) repelem(true, 107)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareDoubles(A, B);\r\n    practicallyEqual2 = compareDoubles(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n%% Both roughly equal to negative one trillion (long scale) https://en.wikipedia.org/wiki/Long_and_short_scales\r\nA = -1E18 - randi(1E14);\r\nbVec   = A  -  2.^[57 : -0.5 : -43];\r\nansVec = [repelem(false, 94) repelem(true, 107)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareDoubles(A, B);\r\n    practicallyEqual2 = compareDoubles(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":2,"created_by":64439,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":17,"test_suite_updated_at":"2018-06-17T02:10:55.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2018-06-16T14:31:50.000Z","updated_at":"2026-03-19T08:46:04.000Z","published_at":"2018-06-17T02:10:55.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eFloating-point numbers\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e cannot generally be represented exactly, so it is usually inappropriate to test for 'equality' between two floating-point numbers. Rather, it is generally appropriate to check whether the difference between the two numbers is sufficiently small that they can be considered practically equal. (In other words, so close in value that any differences could be explained by inherent limitations of computations using floating-point numbers.)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eBased on two scalar inputs of type\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/double.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003edouble\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e, namely\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, you must return a scalar\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/logical.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003elogical\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e output set to\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/true.html\\\"\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003etrue\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e if the difference in magnitude between\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is 'small', or otherwise set to\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/false.html\\\"\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003efalse\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFor\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ethis\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e problem \\\"small\\\" shall be defined as no more than ten times\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, in which\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is the larger of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₁ \u0026amp;\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₂, and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₁ is the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/eps.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003efloating-point precision\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e with which\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is represented, and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₂ is the precision with which\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is represented.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eEXAMPLE:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[% Input\\nA = 0\\nB = 1E-50\\n\\n% Output\\npracticallyEqual = false]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExplanation: \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is represented with a precision of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₁ = 2⁻¹⁰⁷⁴, whereas\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is represented with a precision of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₂ = 2⁻²¹⁹. Thus\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e = 2⁻²¹⁹, and the threshold is 10×2⁻²¹⁹. The difference between\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is 1×10⁻⁵⁰, and this difference exceeds the threshold. Thus\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e are\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003enot\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e practically equal in this example.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eRELATED PROBLEMS:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44691\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 44691. Comparison of floating-point numbers (singles)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44631\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 44631: Make your own Test Suite (part 0)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44513\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 44513: Add all the numbers between two limits (inclusive)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":44691,"title":"Comparison of floating-point numbers (singles)","description":"Floating-point numbers cannot generally be represented exactly, so it is usually inappropriate to test for 'equality' between two floating-point numbers. Rather, it is generally appropriate to check whether the difference between the two numbers is sufficiently small that they can be considered practically equal. (In other words, so close in value that any differences could be explained by inherent limitations of computations using floating-point numbers.)\r\nBased on two scalar inputs of type double, namely A and B, you must return a scalar logical output set to true if the difference in magnitude between the single-precision representations of A and B is 'small', or otherwise set to false.\r\nFor this problem \"small\" shall mean no more than Δ, which is defined as the larger of δ and ten times ε. In turn, δ has a fixed value of 1×10⁻¹⁰ and ε is the larger of ε₁ \u0026 ε₂, where ε₁ is the floating-point precision with which A is represented, and ε₂ is the precision with which B is represented.\r\nEXAMPLE:\r\n% Input\r\nA = 0\r\nB = 1E-20\r\n\r\n% Output\r\npracticallyEqual = true\r\nExplanation: When represented as single values, A is represented with a precision of ε₁ = 2⁻¹⁴⁹, whereas B is represented with a precision of ε₂ = 2⁻⁹⁰. Thus ε = 2⁻⁹⁰; however the threshold Δ is 1×10⁻¹⁰ for this situation, because 1×10⁻¹⁰ \u003e 10×2⁻⁹⁰. The difference between A and B is 1×10⁻²⁰, and this difference does not exceed the threshold. Thus A and B are practically equal in this example.\r\nRELATED PROBLEMS:  \r\nProblem 44690: Comparison of floating-point numbers (doubles)\r\nProblem 44631: Make your own Test Suite (part 0)\r\nProblem 44513: Add all the numbers between two limits (inclusive)","description_html":"\u003cdiv style = \"text-align: start; line-height: 20.44px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: none solid rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 561px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 280.5px; transform-origin: 407px 280.5px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 84px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 42px; text-align: left; transform-origin: 384px 42px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003ca target='_blank' href = \"https://au.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eFloating-point numbers\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e cannot generally be represented exactly, so it is usually inappropriate to test for 'equality' between two floating-point numbers. Rather, it is generally appropriate to check whether the difference between the two numbers is sufficiently small that they can be considered practically equal. (In other words, so close in value that any differences could be explained by inherent limitations of computations using floating-point numbers.)\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eBased on two scalar inputs of type\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://au.mathworks.com/help/matlab/ref/double.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003edouble\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e, namely\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eA\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e and\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eB\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e, you must return a scalar\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://au.mathworks.com/help/matlab/ref/logical.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003elogical\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e output set to\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://au.mathworks.com/help/matlab/ref/true.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003etrue\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e if the difference in magnitude between\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003ethe\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://au.mathworks.com/help/matlab/ref/single.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"font-weight: 700; \"\u003esingle\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003e-precision representations\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e of\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eA\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e and\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eB\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e is 'small', or otherwise set to\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://au.mathworks.com/help/matlab/ref/false.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003efalse\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 63px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 31.5px; text-align: left; transform-origin: 384px 31.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eFor\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003ethis\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e problem \"small\" shall mean no more than\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eΔ\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e, which is defined as the larger of\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eδ\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e and ten times\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eε\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e. In turn,\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eδ\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e has a fixed value of 1×10⁻¹⁰ and\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eε\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e is the larger of\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eε\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e₁ \u0026amp;\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eε\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e₂, where\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eε\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e₁ is the\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://au.mathworks.com/help/matlab/ref/eps.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003efloating-point precision\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e with which\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eA\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e is represented, and\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eε\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e₂ is the precision with which\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eB\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e is represented.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eEXAMPLE:\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 120px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 404px 60px; transform-origin: 404px 60px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10px; transform-origin: 404px 10px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"border-block-end-color: rgb(2, 128, 9); border-block-start-color: rgb(2, 128, 9); border-bottom-color: rgb(2, 128, 9); border-inline-end-color: rgb(2, 128, 9); border-inline-start-color: rgb(2, 128, 9); border-left-color: rgb(2, 128, 9); border-right-color: rgb(2, 128, 9); border-top-color: rgb(2, 128, 9); caret-color: rgb(2, 128, 9); color: rgb(2, 128, 9); column-rule-color: rgb(2, 128, 9); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(2, 128, 9); text-decoration: none; text-decoration-color: rgb(2, 128, 9); \"\u003e% Input\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10px; transform-origin: 404px 10px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003eA = 0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10px; transform-origin: 404px 10px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003eB = 1E-20\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10px; transform-origin: 404px 10px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10px; transform-origin: 404px 10px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"border-block-end-color: rgb(2, 128, 9); border-block-start-color: rgb(2, 128, 9); border-bottom-color: rgb(2, 128, 9); border-inline-end-color: rgb(2, 128, 9); border-inline-start-color: rgb(2, 128, 9); border-left-color: rgb(2, 128, 9); border-right-color: rgb(2, 128, 9); border-top-color: rgb(2, 128, 9); caret-color: rgb(2, 128, 9); color: rgb(2, 128, 9); column-rule-color: rgb(2, 128, 9); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(2, 128, 9); text-decoration: none; text-decoration-color: rgb(2, 128, 9); \"\u003e% Output\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10px; transform-origin: 404px 10px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003epracticallyEqual = true\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 84px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 10px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 10px; perspective-origin: 384px 42px; text-align: left; transform-origin: 384px 42px; white-space: pre-wrap; margin-left: 4px; margin-top: 10px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eExplanation: When represented as\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003esingle\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e values,\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eA\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e is represented with a precision of\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eε\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e₁ = 2⁻¹⁴⁹, whereas\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eB\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e is represented with a precision of\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eε\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e₂ = 2⁻⁹⁰. Thus\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eε\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e = 2⁻⁹⁰; however the threshold\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eΔ\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e is 1×10⁻¹⁰ for this situation, because 1×10⁻¹⁰ \u0026gt; 10×2⁻⁹⁰. The difference between\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eA\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e and\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eB\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e is 1×10⁻²⁰, and this difference does not exceed the threshold. Thus\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eA\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e and\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eB\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eare\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e practically equal in this example.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eRELATED PROBLEMS:  \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cul style=\"block-size: 60px; font-family: Helvetica, Arial, sans-serif; list-style-type: square; margin-block-end: 20px; margin-block-start: 10px; margin-bottom: 20px; margin-top: 10px; perspective-origin: 391px 30px; transform-origin: 391px 30px; margin-top: 10px; margin-bottom: 20px; \"\u003e\u003cli style=\"block-size: 20px; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10px; text-align: left; transform-origin: 363px 10px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003ca target='_blank' href = \"https://www.mathworks.com/matlabcentral/cody/problems/44690\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eProblem 44690: Comparison of floating-point numbers (doubles)\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003c/li\u003e\u003cli style=\"block-size: 20px; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10px; text-align: left; transform-origin: 363px 10px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003ca target='_blank' href = \"https://www.mathworks.com/matlabcentral/cody/problems/44631\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eProblem 44631: Make your own Test Suite (part 0)\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003c/li\u003e\u003cli style=\"block-size: 20px; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10px; text-align: left; transform-origin: 363px 10px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003ca target='_blank' href = \"https://www.mathworks.com/matlabcentral/cody/problems/44513\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eProblem 44513: Add all the numbers between two limits (inclusive)\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function practicallyEqual = compareSingles(A, B)\r\n    \r\nend","test_suite":"%% No silly stuff\r\n% Statements to allow the user to name their function either \"compareSingles\" or \"compareDoubles\". \r\nfnName = 'compareSingles.m';    try,    pE = compareSingles(1, 1);    catch err;    errID = err.identifier;    if strcmp(errID, 'MATLAB:UndefinedFunction'),    fnName = 'compareDoubles.m';    else    rethrow(err);    end;    end;\r\n\r\nassessFunctionAbsence({'regexp', 'regexpi'}, 'FileName',fnName)\r\n\r\nRE = regexp(fileread(fnName), '\\w+', 'match');\r\ntabooWords = {'ans'};\r\ntestResult = cellfun( @(z) ismember(z, tabooWords), RE );\r\nmsg = ['Please do not do that in your code!' char([10 13]) ...\r\n    'Found: ' strjoin(RE(testResult)) '.' char([10 13]) ...\r\n    'Banned word.' char([10 13])];\r\nassert(~any(  cellfun( @(z) ismember(z, tabooWords), RE )  ), msg)\r\n\r\n\r\n%% Zero and small positive numbers\r\nA = 0;\r\n% Note:  realmin ≈ 1.1755e-38\r\nbVec   = logspace(-1, -51, 101);\r\nansVec = [repelem(false, 18) repelem(true, 83)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareNums(A, B);\r\n    practicallyEqual2 = compareNums(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n% A function with try and catch blocks to allow the user to name their function either \"compareSingles\" or \"compareDoubles\". \r\nfunction pE = compareNums(a, b),    try,    pE = compareSingles(a, b);    catch err;    errID = err.identifier;    if strcmp(errID, 'MATLAB:UndefinedFunction'),    pE = compareDoubles(a, b);    else    rethrow(err);    end;    end;    end\r\n\r\n%% Zero and small negative numbers\r\nA = 0;\r\nbVec   = -logspace(-1, -51, 101);\r\nansVec = [repelem(false, 18) repelem(true, 83)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareNums(A, B);\r\n    practicallyEqual2 = compareNums(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n% A function with try and catch blocks to allow the user to name their function either \"compareSingles\" or \"compareDoubles\". \r\nfunction pE = compareNums(a, b),    try,    pE = compareSingles(a, b);    catch err;    errID = err.identifier;    if strcmp(errID, 'MATLAB:UndefinedFunction'),    pE = compareDoubles(a, b);    else    rethrow(err);    end;    end;    end\r\n\r\n\r\n%% One epsilon value above delta/10, one sometimes below.\r\nA = 0.00048828125;\r\nbVec   = A  -  2.^[-11 : -0.5 : -100];\r\nansVec = [repelem(false, 40) repelem(true, 161)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareNums(A, B);\r\n    practicallyEqual2 = compareNums(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n% A function with try and catch blocks to allow the user to name their function either \"compareSingles\" or \"compareDoubles\". \r\nfunction pE = compareNums(a, b),    try,    pE = compareSingles(a, b);    catch err;    errID = err.identifier;    if strcmp(errID, 'MATLAB:UndefinedFunction'),    pE = compareDoubles(a, b);    else    rethrow(err);    end;    end;    end\r\n\r\n\r\n%% Both roughly equal to positive one\r\nA = 1.1 + rand()/2;\r\nbVec   = A  +  2.^[-2 : -0.5 : -102];\r\nansVec = [repelem(false, 36) repelem(true, 165)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareNums(A, B);\r\n    practicallyEqual2 = compareNums(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n% A function with try and catch blocks to allow the user to name their function either \"compareSingles\" or \"compareDoubles\". \r\nfunction pE = compareNums(a, b),    try,    pE = compareSingles(a, b);    catch err;    errID = err.identifier;    if strcmp(errID, 'MATLAB:UndefinedFunction'),    pE = compareDoubles(a, b);    else    rethrow(err);    end;    end;    end\r\n\r\n\r\n%% Both roughly equal to negative one hundred\r\nA = -104 + rand();\r\nbVec   = A  +  2.^[+2 : -0.5 : -98];\r\nansVec = [repelem(false, 32) repelem(true, 169)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareNums(A, B);\r\n    practicallyEqual2 = compareNums(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n% A function with try and catch blocks to allow the user to name their function either \"compareSingles\" or \"compareDoubles\". \r\nfunction pE = compareNums(a, b),    try,    pE = compareSingles(a, b);    catch err;    errID = err.identifier;    if strcmp(errID, 'MATLAB:UndefinedFunction'),    pE = compareDoubles(a, b);    else    rethrow(err);    end;    end;    end\r\n\r\n\r\n%% Both roughly equal to positive one trillion (long scale) https://en.wikipedia.org/wiki/Long_and_short_scales\r\nA = 1E18 + randi(1E14);\r\nbVec   = A  +  2.^[57 : -0.5 : -43];\r\nansVec = [repelem(false, 36) repelem(true, 165)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareNums(A, B);\r\n    practicallyEqual2 = compareNums(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n% A function with try and catch blocks to allow the user to name their function either \"compareSingles\" or \"compareDoubles\". \r\nfunction pE = compareNums(a, b),    try,    pE = compareSingles(a, b);    catch err;    errID = err.identifier;    if strcmp(errID, 'MATLAB:UndefinedFunction'),    pE = compareDoubles(a, b);    else    rethrow(err);    end;    end;    end\r\n\r\n%% Both roughly equal to negative one trillion (long scale) https://en.wikipedia.org/wiki/Long_and_short_scales\r\nA = -1E18 - randi(1E14);\r\nbVec   = A  -  2.^[57 : -0.5 : -43];\r\nansVec = [repelem(false, 36) repelem(true, 165)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareNums(A, B);\r\n    practicallyEqual2 = compareNums(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n% A function with try and catch blocks to allow the user to name their function either \"compareSingles\" or \"compareDoubles\". \r\nfunction pE = compareNums(a, b),    try,    pE = compareSingles(a, b);    catch err;    errID = err.identifier;    if strcmp(errID, 'MATLAB:UndefinedFunction'),    pE = compareDoubles(a, b);    else    rethrow(err);    end;    end;    end\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":8,"created_by":64439,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":9,"test_suite_updated_at":"2021-07-19T11:54:38.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2018-06-17T02:32:49.000Z","updated_at":"2025-12-11T05:24:27.000Z","published_at":"2018-06-17T11:25:27.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eFloating-point numbers\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e cannot generally be represented exactly, so it is usually inappropriate to test for 'equality' between two floating-point numbers. Rather, it is generally appropriate to check whether the difference between the two numbers is sufficiently small that they can be considered practically equal. (In other words, so close in value that any differences could be explained by inherent limitations of computations using floating-point numbers.)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eBased on two scalar inputs of type\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/double.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003edouble\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e, namely\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, you must return a scalar\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/logical.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003elogical\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e output set to\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/true.html\\\"\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003etrue\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e if the difference in magnitude between\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ethe\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/single.html\\\"\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003esingle\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e-precision representations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is 'small', or otherwise set to\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/false.html\\\"\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003efalse\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFor\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ethis\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e problem \\\"small\\\" shall mean no more than\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eΔ\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, which is defined as the larger of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eδ\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and ten times\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e. In turn,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eδ\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e has a fixed value of 1×10⁻¹⁰ and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is the larger of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₁ \u0026amp;\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₂, where\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₁ is the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/eps.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003efloating-point precision\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e with which\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is represented, and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₂ is the precision with which\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is represented.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eEXAMPLE:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[% Input\\nA = 0\\nB = 1E-20\\n\\n% Output\\npracticallyEqual = true]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExplanation: When represented as\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003esingle\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e values,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is represented with a precision of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₁ = 2⁻¹⁴⁹, whereas\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is represented with a precision of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₂ = 2⁻⁹⁰. Thus\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e = 2⁻⁹⁰; however the threshold\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eΔ\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is 1×10⁻¹⁰ for this situation, because 1×10⁻¹⁰ \u0026gt; 10×2⁻⁹⁰. The difference between\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is 1×10⁻²⁰, and this difference does not exceed the threshold. Thus\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eare\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e practically equal in this example.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eRELATED PROBLEMS:  \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44690\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 44690: Comparison of floating-point numbers (doubles)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44631\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 44631: Make your own Test Suite (part 0)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44513\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 44513: Add all the numbers between two limits (inclusive)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":44513,"title":"Add all the numbers between two limits (inclusive)","description":"In this problem you must add up \"all of the numbers\" between two specified limits, |a| and |b|, in which |a| ≤ |b|.  However, the practical interpretation of \"all of the numbers\" will depend upon the specified \u003chttps://au.mathworks.com/help/matlab/numeric-types.html data type\u003e, |dt|.  \r\n\r\nMathematically speaking, if |a| \u003c |b| then the required sum constitutes an _infinite series_ that does not converge (i.e. the required sum would be infinity).  For example, if |a=1| and |b=2| then we could capture _some_ of those numbers through the series \r\nlim n→∞  ⁿ∑ᵢ₌₁{1 + (1/i)} = lim n→∞ {n + ⁿ∑ᵢ₌₁(1/i)} ≈ lim n→∞ {n + γ + ln(n)}, using properties of the harmonic series in the last approximation.  \r\n\r\nBut MATLAB cannot represent numbers with _infinite_ precision.  In fact, the precision is determined by the specified \u003chttps://au.mathworks.com/help/matlab/numeric-types.html data type\u003e.  For instance, if |dt = 'single'|, then with |a=1| and |b=2| the summation would comprise the series {(1) + (1+1×2⁻²³) + (1+2×2⁻²³) + (1+3×2⁻²³) + ... + (2−2×2⁻²³) + (2−1×2⁻²³) + (2)} = 12582913.5, which is finite.  \r\n\r\nAnother example:\r\n\r\n % INPUT\r\n a = 10\r\n b = 12\r\n dt = 'int16'\r\n % OUTPUT\r\n s = 33         %  = 10 + 11 +12\r\n\r\nSo please add up all the numbers between two limits (inclusive), subject to the precision indicated by the specified \u003chttps://au.mathworks.com/help/matlab/numeric-types.html data type\u003e.  \r\n\r\n_NOTE *1*:  Terminal values |a| and |b| are whole numbers in every case (albeit implicitly defined as of the |double| data type);  they can be positive or negative.  However, values -1\u003cx\u003c+1 are never included in the summations._  \r\n\r\n_NOTE *2*:  All data types specified in the input |dt| shall be \u003chttps://au.mathworks.com/help/matlab/numeric-types.html numeric\u003e._ ","description_html":"\u003cp\u003eIn this problem you must add up \"all of the numbers\" between two specified limits, \u003ctt\u003ea\u003c/tt\u003e and \u003ctt\u003eb\u003c/tt\u003e, in which \u003ctt\u003ea\u003c/tt\u003e ≤ \u003ctt\u003eb\u003c/tt\u003e.  However, the practical interpretation of \"all of the numbers\" will depend upon the specified \u003ca href = \"https://au.mathworks.com/help/matlab/numeric-types.html\"\u003edata type\u003c/a\u003e, \u003ctt\u003edt\u003c/tt\u003e.\u003c/p\u003e\u003cp\u003eMathematically speaking, if \u003ctt\u003ea\u003c/tt\u003e \u0026lt; \u003ctt\u003eb\u003c/tt\u003e then the required sum constitutes an \u003ci\u003einfinite series\u003c/i\u003e that does not converge (i.e. the required sum would be infinity).  For example, if \u003ctt\u003ea=1\u003c/tt\u003e and \u003ctt\u003eb=2\u003c/tt\u003e then we could capture \u003ci\u003esome\u003c/i\u003e of those numbers through the series \r\nlim n→∞  ⁿ∑ᵢ₌₁{1 + (1/i)} = lim n→∞ {n + ⁿ∑ᵢ₌₁(1/i)} ≈ lim n→∞ {n + γ + ln(n)}, using properties of the harmonic series in the last approximation.\u003c/p\u003e\u003cp\u003eBut MATLAB cannot represent numbers with \u003ci\u003einfinite\u003c/i\u003e precision.  In fact, the precision is determined by the specified \u003ca href = \"https://au.mathworks.com/help/matlab/numeric-types.html\"\u003edata type\u003c/a\u003e.  For instance, if \u003ctt\u003edt = 'single'\u003c/tt\u003e, then with \u003ctt\u003ea=1\u003c/tt\u003e and \u003ctt\u003eb=2\u003c/tt\u003e the summation would comprise the series {(1) + (1+1×2⁻²³) + (1+2×2⁻²³) + (1+3×2⁻²³) + ... + (2−2×2⁻²³) + (2−1×2⁻²³) + (2)} = 12582913.5, which is finite.\u003c/p\u003e\u003cp\u003eAnother example:\u003c/p\u003e\u003cpre\u003e % INPUT\r\n a = 10\r\n b = 12\r\n dt = 'int16'\r\n % OUTPUT\r\n s = 33         %  = 10 + 11 +12\u003c/pre\u003e\u003cp\u003eSo please add up all the numbers between two limits (inclusive), subject to the precision indicated by the specified \u003ca href = \"https://au.mathworks.com/help/matlab/numeric-types.html\"\u003edata type\u003c/a\u003e.\u003c/p\u003e\u003cp\u003e\u003ci\u003eNOTE \u003cb\u003e1\u003c/b\u003e:  Terminal values \u003ctt\u003ea\u003c/tt\u003e and \u003ctt\u003eb\u003c/tt\u003e are whole numbers in every case (albeit implicitly defined as of the \u003ctt\u003edouble\u003c/tt\u003e data type);  they can be positive or negative.  However, values -1\u0026lt;x\u0026lt;+1 are never included in the summations.\u003c/i\u003e\u003c/p\u003e\u003cp\u003e\u003ci\u003eNOTE \u003cb\u003e2\u003c/b\u003e:  All data types specified in the input \u003ctt\u003edt\u003c/tt\u003e shall be \u003ca href = \"https://au.mathworks.com/help/matlab/numeric-types.html\"\u003enumeric\u003c/a\u003e.\u003c/i\u003e\u003c/p\u003e","function_template":"function s = summation(a, b, dt)\r\n    \r\nend","test_suite":"%%\r\na = 1;\r\nb = 2;\r\ndt = 'uint64';\r\ns_correct = 3;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 1;\r\nb = 2;\r\ndt = 'int8';\r\ns_correct = 3;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 1;\r\nb = 2;\r\ndt = 'single';\r\ns_correct = 12582913.5;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 2 )\r\n\r\n%%\r\na = 1;\r\nb = 2;\r\ndt = 'double';\r\ns_correct = 6755399441055746;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 2 )\r\n\r\n\r\n%%\r\na = 2;\r\nb = 3;\r\ndt = 'int32';\r\ns_correct = 5;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 2;\r\nb = 3;\r\ndt = 'uint16';\r\ns_correct = 5;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 2;\r\nb = 3;\r\ndt = 'single';\r\ns_correct = 10485762.5;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 2 )\r\n\r\n%%\r\na = 2;\r\nb = 3;\r\ndt = 'double';\r\ns_correct = 5629499534213122;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 2 )\r\n\r\n\r\n%%\r\na = 4;\r\nb = 5;\r\ndt = 'int64';\r\ns_correct = 9;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 4;\r\nb = 5;\r\ndt = 'uint8';\r\ns_correct = 9;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 4;\r\nb = 5;\r\ndt = 'single';\r\ns_correct = 9437188.5;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 2 )\r\n\r\n%%\r\na = 4;\r\nb = 5;\r\ndt = 'double';\r\ns_correct = 5066549580791812;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 2 )\r\n\r\n\r\n%%\r\na = 8;\r\nb = 9;\r\ndt = 'uint32';\r\ns_correct = 17;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 8;\r\nb = 9;\r\ndt = 'int16';\r\ns_correct = 17;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 8;\r\nb = 9;\r\ndt = 'single';\r\ns_correct = 8912904.5;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 2 )\r\n\r\n%%\r\na = 8;\r\nb = 9;\r\ndt = 'double';\r\ns_correct = 4785074604081160;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 2 )\r\n\r\n\r\n%%\r\na = 20;\r\nb = 22;\r\ndt = 'int32';\r\ns_correct = 63;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 20;\r\nb = 22;\r\ndt = 'double';\r\ns_correct = 11821949021847573;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 4 )\r\n\r\n%%\r\na = 20;\r\nb = 22;\r\ndt = 'single';\r\ns_correct = 22020117;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 4 )\r\n\r\n\r\n%%\r\na = 20;\r\nb = 30;\r\ndt = 'uint16';\r\ns_correct = 275;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 20;\r\nb = 30;\r\ndt = 'double';\r\ns_correct = 70368744177664025;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 32 )\r\n\r\n%%\r\na = 20;\r\nb = 30;\r\ndt = 'single';\r\ns_correct = 131072025;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 32 )\r\n\r\n\r\n%%\r\na = 1;\r\nb = 17;\r\ndt = 'uint8';\r\ns_correct = 153;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 1;\r\nb = 17;\r\ndt = 'double';\r\ns_correct = 105975328731561993;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 64 )\r\n\r\n%%\r\na = 1;\r\nb = 17;\r\ndt = 'single';\r\ns_correct = 197394441;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 64 )\r\n\r\n\r\n%%\r\na = -130;\r\nb = -126;\r\ndt = 'int32';\r\ns_correct = -640;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = -130;\r\nb = -126;\r\ndt = 'double';\r\ns_correct = -26951229020045440;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 16 )\r\n\r\n%%\r\na = -130;\r\nb = -126;\r\ndt = 'single';\r\ns_correct = -50200704;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 16 )\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":3,"created_by":64439,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":5,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2018-02-06T03:56:08.000Z","updated_at":"2018-02-06T14:46:13.000Z","published_at":"2018-02-06T14:39:57.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIn this problem you must add up \\\"all of the numbers\\\" between two specified limits,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eb\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, in which\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e ≤\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eb\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e. However, the practical interpretation of \\\"all of the numbers\\\" will depend upon the specified\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/numeric-types.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003edata type\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003edt\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eMathematically speaking, if\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u0026lt;\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eb\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e then the required sum constitutes an\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003einfinite series\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e that does not converge (i.e. the required sum would be infinity). For example, if\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea=1\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eb=2\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e then we could capture\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003esome\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e of those numbers through the series lim n→∞ ⁿ∑ᵢ₌₁{1 + (1/i)} = lim n→∞ {n + ⁿ∑ᵢ₌₁(1/i)} ≈ lim n→∞ {n + γ + ln(n)}, using properties of the harmonic series in the last approximation.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eBut MATLAB cannot represent numbers with\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003einfinite\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e precision. In fact, the precision is determined by the specified\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/numeric-types.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003edata type\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. For instance, if\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003edt = 'single'\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, then with\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea=1\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eb=2\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e the summation would comprise the series {(1) + (1+1×2⁻²³) + (1+2×2⁻²³) + (1+3×2⁻²³) + ... + (2−2×2⁻²³) + (2−1×2⁻²³) + (2)} = 12582913.5, which is finite.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eAnother example:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ % INPUT\\n a = 10\\n b = 12\\n dt = 'int16'\\n % OUTPUT\\n s = 33         %  = 10 + 11 +12]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSo please add up all the numbers between two limits (inclusive), subject to the precision indicated by the specified\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/numeric-types.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003edata type\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eNOTE\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e1\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e: Terminal values\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eb\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e are whole numbers in every case (albeit implicitly defined as of the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003edouble\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e data type); they can be positive or negative. However, values -1\u0026lt;x\u0026lt;+1 are never included in the summations.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eNOTE\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e2\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e: All data types specified in the input\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003edt\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e shall be\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/numeric-types.html\\\"\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003enumeric\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":44631,"title":"Make your own Test Suite (part 0)","description":"_Have no knowledge of \u003chttps://au.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html \"floating-point numbers\"\u003e?  Read the documentation, and/or try \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44690 Problem 44690\u003e first._\r\n\r\n——————————————————————————————————————————\r\n\r\nIn this task you need to imagine that you — _yes, YOU_ — have developed a problem on Cody for _me_ to solve, and now *you need to draft a naïve Test Suite* as the first step in developing a more robust Test Suite that would check whether _my_ submitted solutions meet _your_ requirements or not.  \r\n\r\nSo the tables are turned!  You are now in the role of Tester!  I am in the role of Player!  \r\n\r\nThe problem you've set me is to:\r\n\r\n* output the *sine* of an angle, when the angle is specified in degrees as a (scalar) \u003chttps://au.mathworks.com/help/matlab/ref/double.html |double|\u003e, with no restriction in the domain.\r\n\r\nYou provide me with the following example for the function defined as |s = SINE(a)|:\r\n\r\n % INPUT\r\n a = 45 % degrees\r\n % OUTPUT\r\n s = 1/sqrt(2)\r\n\r\nNow I have responded by submitting a large number of purported 'solutions', some of which are _reasonably accurate_, and others which are either too imprecise or else logically flawed.  \r\n\r\nYour final Test Suite (contained within _your_ function |testSuite|) will have to address several aspects arising in your problem specification.  However, for this 'first draft' you are creating a naïve Test Suite with only one requirement:  \r\n\r\n# Check that my submitted code reliably returns *sufficiently accurate* values for sine of many different angles.  Use the \u003chttps://au.mathworks.com/help/matlab/ref/assert.html |assert|\u003e function to generate \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44357 errors/exceptions\u003e if the values are not sufficiently accurate.  \r\n\r\nYou *can* use the functions |sind|, |sin|, _etc._ in this draft Test Suite, if you want — even though this would be bad practice in your final Test Suite! \r\n\r\nThus, the above specification is merely a _starting point_.  You will develop more robust Test Suites in:\r\n\r\n* \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44617 Problem 44617\u003e (part *1*)\r\n* \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44616 Problem 44616\u003e (part *2*)\r\n* \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44521 Problem 44521\u003e (part *3*)","description_html":"\u003cp\u003e\u003ci\u003eHave no knowledge of \u003ca href = \"https://au.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html\"\u003e\"floating-point numbers\"\u003c/a\u003e?  Read the documentation, and/or try \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44690\"\u003eProblem 44690\u003c/a\u003e first.\u003c/i\u003e\u003c/p\u003e\u003cp\u003e——————————————————————————————————————————\u003c/p\u003e\u003cp\u003eIn this task you need to imagine that you — \u003ci\u003eyes, YOU\u003c/i\u003e — have developed a problem on Cody for \u003ci\u003eme\u003c/i\u003e to solve, and now \u003cb\u003eyou need to draft a naïve Test Suite\u003c/b\u003e as the first step in developing a more robust Test Suite that would check whether \u003ci\u003emy\u003c/i\u003e submitted solutions meet \u003ci\u003eyour\u003c/i\u003e requirements or not.\u003c/p\u003e\u003cp\u003eSo the tables are turned!  You are now in the role of Tester!  I am in the role of Player!\u003c/p\u003e\u003cp\u003eThe problem you've set me is to:\u003c/p\u003e\u003cul\u003e\u003cli\u003eoutput the \u003cb\u003esine\u003c/b\u003e of an angle, when the angle is specified in degrees as a (scalar) \u003ca href = \"https://au.mathworks.com/help/matlab/ref/double.html\"\u003e\u003ctt\u003edouble\u003c/tt\u003e\u003c/a\u003e, with no restriction in the domain.\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eYou provide me with the following example for the function defined as \u003ctt\u003es = SINE(a)\u003c/tt\u003e:\u003c/p\u003e\u003cpre\u003e % INPUT\r\n a = 45 % degrees\r\n % OUTPUT\r\n s = 1/sqrt(2)\u003c/pre\u003e\u003cp\u003eNow I have responded by submitting a large number of purported 'solutions', some of which are \u003ci\u003ereasonably accurate\u003c/i\u003e, and others which are either too imprecise or else logically flawed.\u003c/p\u003e\u003cp\u003eYour final Test Suite (contained within \u003ci\u003eyour\u003c/i\u003e function \u003ctt\u003etestSuite\u003c/tt\u003e) will have to address several aspects arising in your problem specification.  However, for this 'first draft' you are creating a naïve Test Suite with only one requirement:\u003c/p\u003e\u003col\u003e\u003cli\u003eCheck that my submitted code reliably returns \u003cb\u003esufficiently accurate\u003c/b\u003e values for sine of many different angles.  Use the \u003ca href = \"https://au.mathworks.com/help/matlab/ref/assert.html\"\u003e\u003ctt\u003eassert\u003c/tt\u003e\u003c/a\u003e function to generate \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44357\"\u003eerrors/exceptions\u003c/a\u003e if the values are not sufficiently accurate.\u003c/li\u003e\u003c/ol\u003e\u003cp\u003eYou \u003cb\u003ecan\u003c/b\u003e use the functions \u003ctt\u003esind\u003c/tt\u003e, \u003ctt\u003esin\u003c/tt\u003e, \u003ci\u003eetc.\u003c/i\u003e in this draft Test Suite, if you want — even though this would be bad practice in your final Test Suite!\u003c/p\u003e\u003cp\u003eThus, the above specification is merely a \u003ci\u003estarting point\u003c/i\u003e.  You will develop more robust Test Suites in:\u003c/p\u003e\u003cul\u003e\u003cli\u003e\u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44617\"\u003eProblem 44617\u003c/a\u003e (part \u003cb\u003e1\u003c/b\u003e)\u003c/li\u003e\u003cli\u003e\u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44616\"\u003eProblem 44616\u003c/a\u003e (part \u003cb\u003e2\u003c/b\u003e)\u003c/li\u003e\u003cli\u003e\u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44521\"\u003eProblem 44521\u003c/a\u003e (part \u003cb\u003e3\u003c/b\u003e)\u003c/li\u003e\u003c/ul\u003e","function_template":"function dummy = testSuite()\r\n    \r\n    % Check outputs of submitted SINE function for various input values\r\n    % RATIONALE:  Computing SINE requires relatively simple code, \r\n    %             as the focus in the present task is on implementing a robust Test Suite.  \r\n    % MOTIVATION:  I could be submitting lazy code that only works for \r\n    %              a small number of angles, if that's all you test.\r\n    \r\n    %% Test 1\r\n    assert( isequal( SINE(45), 1/sqrt(2) )  )\r\n    \r\n    %% Test 2\r\n    assert( isequal( SINE(45), sine(45) )  )\r\n    \r\n    %% Test 3\r\n    assert( isequal( SINE(45), sin(45) )  )\r\n    \r\n    %% Test 4\r\n    assert( isequal( SINE(45), sind(45) )  )\r\n\r\n    %% Test 5\r\n    assert( isequal( SINE(45), sine(1/sqrt(2)) )  )\r\n    \r\n    %% Test 6\r\n    assert( isequal( SINE(45), sin(1/sqrt(2)) )  )\r\n    \r\n    %% Test 7\r\n    assert( isequal( SINE(45), sind(1/sqrt(2)) )  )\r\n    \r\n\r\nend\r\n\r\n%{\r\nNOTE:  \r\nThe text \"dummy = \" was added to this Function Template, \r\nbecause Cody was generating a spurious error, namely\r\n        Your problem cannot be published until you:\r\n        •Edit the function name in the test suite to match the function name in the function template\r\nHowever, in the Reference Solution it was confirmed to be unnecessary.  \r\n%}","test_suite":"%% Placeholder\r\n%assessFunctionAbsence('sind', 'FileName','testSuite.m')\r\n\r\n\r\n%% Exactly right\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = sind(angle);\\n');\r\nfclose(fileID);\r\nstatus_correct = 'pass';\r\nstatus = 'pass';\r\n                    testSuite()\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% Sufficiently close (I)\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = sind(angle + eps(angle));\\n');\r\nfclose(fileID);\r\nstatus_correct = 'pass';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% Sufficiently close (II)\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = sin(angle * pi / 180);\\n');\r\nfclose(fileID);\r\nstatus_correct = 'pass';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% Sufficiently close (III)\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = 1 ./ cscd(angle);\\n');\r\nfclose(fileID);\r\nstatus_correct = 'pass';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% Insufficiently close (I)\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = sin(angle * 3.14 / 180);\\n');\r\nfclose(fileID);\r\nstatus_correct = 'fail';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% Insufficiently close (II)\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = sin(angle * (22/7) / 180);\\n');\r\nfclose(fileID);\r\nstatus_correct = 'fail';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% Sufficiently close (III)\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = sind(angle + 10000*eps(angle));\\n');\r\nfclose(fileID);\r\nstatus_correct = 'fail';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% Completely wrong\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = cosd(angle);\\n');\r\nfclose(fileID);\r\nstatus_correct = 'fail';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% Partly wrong (I)\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = sind(angle*sign(angle));\\n');\r\nfclose(fileID);\r\nstatus_correct = 'fail';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% Partly wrong (II)\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = -sind(angle*sign(angle));\\n');\r\nfclose(fileID);\r\nstatus_correct = 'fail';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% Partly wrong (III)\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = sind(angle)*sign(sind(angle));\\n');\r\nfclose(fileID);\r\nstatus_correct = 'fail';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% 'Fixed' angles\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = sind(fix(angle));\\n');\r\nfclose(fileID);\r\nstatus_correct = 'fail';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% 'Unfixed' angles\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   inc=0;\\n');\r\nfprintf(fileID,'   if mod(angle,1)==0, inc=1; end;\\n');\r\nfprintf(fileID,'   s = sind(angle + inc);\\n');\r\nfclose(fileID);\r\nstatus_correct = 'fail';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":6,"created_by":64439,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":5,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2018-05-05T12:36:47.000Z","updated_at":"2018-06-17T02:29:04.000Z","published_at":"2018-05-05T13:35:28.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eHave no knowledge of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html\\\"\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"floating-point numbers\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e? Read the documentation, and/or try\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44690\\\"\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eProblem 44690\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e first.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e——————————————————————————————————————————\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIn this task you need to imagine that you —\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eyes, YOU\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e — have developed a problem on Cody for\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eme\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e to solve, and now\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eyou need to draft a naïve Test Suite\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e as the first step in developing a more robust Test Suite that would check whether\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003emy\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e submitted solutions meet\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eyour\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e requirements or not.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSo the tables are turned! You are now in the role of Tester! I am in the role of Player!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe problem you've set me is to:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003esine\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e of an angle, when the angle is specified in degrees as a (scalar)\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/double.html\\\"\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003edouble\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e, with no restriction in the domain.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou provide me with the following example for the function defined as\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003es = SINE(a)\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ % INPUT\\n a = 45 % degrees\\n % OUTPUT\\n s = 1/sqrt(2)]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eNow I have responded by submitting a large number of purported 'solutions', some of which are\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ereasonably accurate\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, and others which are either too imprecise or else logically flawed.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYour final Test Suite (contained within\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eyour\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e function\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003etestSuite\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e) will have to address several aspects arising in your problem specification. However, for this 'first draft' you are creating a naïve Test Suite with only one requirement:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"2\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eCheck that my submitted code reliably returns\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003esufficiently accurate\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e values for sine of many different angles. Use the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/assert.html\\\"\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eassert\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e function to generate\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44357\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eerrors/exceptions\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e if the values are not sufficiently accurate.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ecan\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e use the functions\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003esind\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003esin\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eetc.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e in this draft Test Suite, if you want — even though this would be bad practice in your final Test Suite!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThus, the above specification is merely a\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003estarting point\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e. You will develop more robust Test Suites in:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44617\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 44617\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (part\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e1\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44616\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 44616\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (part\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e2\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44521\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 44521\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (part\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e3\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":44695,"title":"What score did they give?","description":"Your task in this problem is to figure out the most recent score, |S|, submitted.  \r\n\r\n\u003c\u003chttps://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Star_rating_4.5_of_5.png/799px-Star_rating_4.5_of_5.png\u003e\u003e\r\n\r\nMany websites allow users to rate things like restaurants, books, films, and even computer programs.  Often these are rated _from one to five stars_, and the display shows the _average_ rating after _rounding to one decimal place_, |R|, and the number of users who have rated the item/place/thing, |N|.  \r\n\r\nThis morning you checked the website and noted |R| and |N|.  This evening you check again:  |N| has increased by one, and the rounded version of the updated overall rating is now displayed, |R_new|.  You then deduce what possible scores, |S|, were submitted by the additional person during the day.  \r\n\r\nEXAMPLE\r\n\r\n % Inputs\r\n N = 11\r\n R = 2.5\r\n R_new = 2.6\r\n % Output\r\n S = [3 4]\r\n\r\nExplanation:  Given |N|=11, the unrounded version of |R| must have been either 2 ⁵/₁₁ or 2 ⁶/₁₁. Increasing |N| by 1 with an additional score of either 4 stars or 3 stars (respectively) would mean that the unrounded version of |R_new| would become 2 ⁷/₁₂, consistent with the displayed value.  \r\n\r\n|S| shall be a row vector, or scalar, or empty.  If |S| is a row vector, scores shall be listed in ascending order, without repetition.  ","description_html":"\u003cp\u003eYour task in this problem is to figure out the most recent score, \u003ctt\u003eS\u003c/tt\u003e, submitted.\u003c/p\u003e\u003cimg src = \"https://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Star_rating_4.5_of_5.png/799px-Star_rating_4.5_of_5.png\"\u003e\u003cp\u003eMany websites allow users to rate things like restaurants, books, films, and even computer programs.  Often these are rated \u003ci\u003efrom one to five stars\u003c/i\u003e, and the display shows the \u003ci\u003eaverage\u003c/i\u003e rating after \u003ci\u003erounding to one decimal place\u003c/i\u003e, \u003ctt\u003eR\u003c/tt\u003e, and the number of users who have rated the item/place/thing, \u003ctt\u003eN\u003c/tt\u003e.\u003c/p\u003e\u003cp\u003eThis morning you checked the website and noted \u003ctt\u003eR\u003c/tt\u003e and \u003ctt\u003eN\u003c/tt\u003e.  This evening you check again:  \u003ctt\u003eN\u003c/tt\u003e has increased by one, and the rounded version of the updated overall rating is now displayed, \u003ctt\u003eR_new\u003c/tt\u003e.  You then deduce what possible scores, \u003ctt\u003eS\u003c/tt\u003e, were submitted by the additional person during the day.\u003c/p\u003e\u003cp\u003eEXAMPLE\u003c/p\u003e\u003cpre\u003e % Inputs\r\n N = 11\r\n R = 2.5\r\n R_new = 2.6\r\n % Output\r\n S = [3 4]\u003c/pre\u003e\u003cp\u003eExplanation:  Given \u003ctt\u003eN\u003c/tt\u003e=11, the unrounded version of \u003ctt\u003eR\u003c/tt\u003e must have been either 2 ⁵/₁₁ or 2 ⁶/₁₁. Increasing \u003ctt\u003eN\u003c/tt\u003e by 1 with an additional score of either 4 stars or 3 stars (respectively) would mean that the unrounded version of \u003ctt\u003eR_new\u003c/tt\u003e would become 2 ⁷/₁₂, consistent with the displayed value.\u003c/p\u003e\u003cp\u003e\u003ctt\u003eS\u003c/tt\u003e shall be a row vector, or scalar, or empty.  If \u003ctt\u003eS\u003c/tt\u003e is a row vector, scores shall be listed in ascending order, without repetition.\u003c/p\u003e","function_template":"function S = latestScore(N, R, R_new)\r\n    \r\nend","test_suite":"%% No silly stuff\r\n% This Test Suite can be updated if inappropriate 'hacks' are discovered \r\n% in any submitted solutions, so your submission's status may therefore change over time.  \r\nassessFunctionAbsence({'regexp', 'regexpi', 'str2num'}, 'FileName','latestScore.m')\r\n\r\nRE = regexp(fileread('latestScore.m'), '\\w+', 'match');\r\ntabooWords = {'ans'};\r\ntestResult = cellfun( @(z) ismember(z, tabooWords), RE );\r\nmsg = ['Please do not do that in your code!' char([10 13]) ...\r\n    'Found: ' strjoin(RE(testResult)) '.' char([10 13]) ...\r\n    'Banned word.' char([10 13])];\r\nassert(~any( testResult ), msg)\r\n\r\n\r\n%% N = 11\r\nN = 11;\r\nR = 2.5;\r\nR_new = 2.2;\r\nS = latestScore(N, R, R_new);\r\nassert( isempty(S) )\r\n\r\n%%\r\nN = 11;\r\nR = 2.5;\r\nR_new = 2.3;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 1;\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 11;\r\nR = 2.5;\r\nR_new = 2.4;\r\nS = latestScore(N, R, R_new);\r\nS_correct = [1 2];\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 11;\r\nR = 2.5;\r\nR_new = 2.5;\r\nS = latestScore(N, R, R_new);\r\nS_correct = [2 3];\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 11;\r\nR = 2.5;\r\nR_new = 2.6;\r\nS = latestScore(N, R, R_new);\r\nS_correct = [3 4];\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 11;\r\nR = 2.5;\r\nR_new = 2.7;\r\nS = latestScore(N, R, R_new);\r\nS_correct = [4 5];\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 11;\r\nR = 2.5;\r\nR_new = 2.8;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 5;\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 11;\r\nR = 2.5;\r\nR_new = 2.9;\r\nS = latestScore(N, R, R_new);\r\nassert( isempty(S) )\r\n\r\n\r\n%% N = 12\r\nN = 12;\r\nR = 2.3;\r\nR_new = 2.2;\r\nS = latestScore(N, R, R_new);\r\nS_correct = [1 2];\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 12;\r\nR = 2.3;\r\nR_new = 2.5;\r\nS = latestScore(N, R, R_new);\r\nS_correct = [4 5];\r\nassert(isequal(S, S_correct))\r\n\r\n\r\n\r\n%% N = 17\r\nN = 17;\r\nR = 1.6;\r\nR_new = 1.7;\r\nS = latestScore(N, R, R_new);\r\nS_correct = [2 3 4];\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 17;\r\nR = 2.6;\r\nR_new = 2.5;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 1;\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 17;\r\nR = 2.6;\r\nR_new = 2.7;\r\nS = latestScore(N, R, R_new);\r\nS_correct = [3 4 5];\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 17;\r\nR = 2.6;\r\nR_new = 2.8;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 5;\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 17;\r\nR = 3.4;\r\nR_new = 3.2;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 1;\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 17;\r\nR = 3.4;\r\nR_new = 3.3;\r\nS = latestScore(N, R, R_new);\r\nS_correct = [1 2 3];\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 17;\r\nR = 3.4;\r\nR_new = 3.5;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 5;\r\nassert(isequal(S, S_correct))\r\n\r\n\r\n%% N = 48\r\nN = 48;\r\nR = 3.7;\r\nR_new = 3.5;\r\nS = latestScore(N, R, R_new);\r\nassert( isempty(S) )\r\n\r\n%%\r\nN = 48;\r\nR = 3.7;\r\nR_new = 3.6;\r\nS = latestScore(N, R, R_new);\r\nS_correct = [1 2];\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 48;\r\nR = 3.7;\r\nR_new = 3.7;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 1:5;\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 48;\r\nR = 3.7;\r\nR_new = 3.8;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 5;\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 48;\r\nR = 4.4;\r\nR_new = 4.2;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 1:4;\r\nassert( isempty(S) )\r\n\r\n%%\r\nN = 48;\r\nR = 4.4;\r\nR_new = 4.3;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 1:4;\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 48;\r\nR = 4.4;\r\nR_new = 4.4;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 1:5;\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 48;\r\nR = 4.4;\r\nR_new = 4.5;\r\nS = latestScore(N, R, R_new);\r\nassert( isempty(S) )\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":2,"created_by":64439,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":9,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2018-07-09T03:13:05.000Z","updated_at":"2025-09-14T14:31:48.000Z","published_at":"2018-07-09T04:06:39.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/media/image1.png\"}],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYour task in this problem is to figure out the most recent score,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eS\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, submitted.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"relationshipId\\\" w:val=\\\"rId1\\\"/\u003e\u003c/w:customXmlPr\u003e\u003c/w:customXml\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eMany websites allow users to rate things like restaurants, books, films, and even computer programs. Often these are rated\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003efrom one to five stars\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, and the display shows the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eaverage\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e rating after\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003erounding to one decimal place\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eR\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, and the number of users who have rated the item/place/thing,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eN\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis morning you checked the website and noted\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eR\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eN\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e. This evening you check again: \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eN\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e has increased by one, and the rounded version of the updated overall rating is now displayed,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eR_new\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e. You then deduce what possible scores,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eS\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, were submitted by the additional person during the day.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eEXAMPLE\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ % Inputs\\n N = 11\\n R = 2.5\\n R_new = 2.6\\n % Output\\n S = [3 4]]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExplanation: Given\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eN\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e=11, the unrounded version of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eR\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e must have been either 2 ⁵/₁₁ or 2 ⁶/₁₁. Increasing\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eN\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e by 1 with an additional score of either 4 stars or 3 stars (respectively) would mean that the unrounded version of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eR_new\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e would become 2 ⁷/₁₂, consistent with the displayed value.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eS\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e shall be a row vector, or scalar, or empty. If\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eS\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is a row vector, scores shall be listed in ascending order, without repetition.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"},{\"partUri\":\"/media/image1.png\",\"contentType\":\"image/png\",\"content\":\"data:image/png;base64,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\"}]}"},{"id":44545,"title":"\"Percentages may not total 100 due to rounding\"","description":"*Percentages* are commonly *rounded* when presented in tables.  As a result, the sum of the individual numbers does not always add up to 100%.  A warning is therefore sometimes appended to such tables, along the lines: _\"Percentages may not total 100 due to rounding\"_.\r\n\r\nEXAMPLE 1:\r\nA survey of eleven people for their opinion on a new policy found five to be in favour, five opposed, and one undecided/neutral.  Percentage-wise this becomes\r\n\r\n  In favour:          45% (5 of 11)\r\n  Undecided/neutral:   9% (1 of 11)  \r\n  Opposed:            45% (5 of 11)  \r\n\r\nThe total of these is 99%, rather than the expected 100%.  Despite this conflict, in this example *all of the individual numbers have been correctly entered*.  \r\n\r\nEXAMPLE 2:\r\nIn the same report, a survey of a further ten people on a different policy found four to be in favour, four opposed, and two undecided/neutral.  Suppose the data were presented in the following table\r\n\r\n  In favour:          45%\r\n  Undecided/neutral:  20%\r\n  Opposed:            45%\r\n\r\nGiven the background information, we would quickly recognise this as inconsistent, with a spurious total of 110%, rather than the expected 100%.  In fact, we would probably guess that a copy-and-paste mistake had occurred.  However, it is important to realise that even if we looked at this table alone, in isolation, without any background knowledge of the survey size or the true number of responses in any category, just by knowing that there are only three categories we can firmly conclude that in this example *one or more of the individual numbers must have been entered incorrectly*.  \r\n\r\nYOUR JOB:  \r\nGiven a list (vector) of integer percentages, determine whether among the individual values at least one of them _must_ have been incorrectly entered (return |true|), as in Example 2, or whether there might not be any incorrect entries (return |false|), as in Example 1.","description_html":"\u003cp\u003e\u003cb\u003ePercentages\u003c/b\u003e are commonly \u003cb\u003erounded\u003c/b\u003e when presented in tables.  As a result, the sum of the individual numbers does not always add up to 100%.  A warning is therefore sometimes appended to such tables, along the lines: \u003ci\u003e\"Percentages may not total 100 due to rounding\"\u003c/i\u003e.\u003c/p\u003e\u003cp\u003eEXAMPLE 1:\r\nA survey of eleven people for their opinion on a new policy found five to be in favour, five opposed, and one undecided/neutral.  Percentage-wise this becomes\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eIn favour:          45% (5 of 11)\r\nUndecided/neutral:   9% (1 of 11)  \r\nOpposed:            45% (5 of 11)  \r\n\u003c/pre\u003e\u003cp\u003eThe total of these is 99%, rather than the expected 100%.  Despite this conflict, in this example \u003cb\u003eall of the individual numbers have been correctly entered\u003c/b\u003e.\u003c/p\u003e\u003cp\u003eEXAMPLE 2:\r\nIn the same report, a survey of a further ten people on a different policy found four to be in favour, four opposed, and two undecided/neutral.  Suppose the data were presented in the following table\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eIn favour:          45%\r\nUndecided/neutral:  20%\r\nOpposed:            45%\r\n\u003c/pre\u003e\u003cp\u003eGiven the background information, we would quickly recognise this as inconsistent, with a spurious total of 110%, rather than the expected 100%.  In fact, we would probably guess that a copy-and-paste mistake had occurred.  However, it is important to realise that even if we looked at this table alone, in isolation, without any background knowledge of the survey size or the true number of responses in any category, just by knowing that there are only three categories we can firmly conclude that in this example \u003cb\u003eone or more of the individual numbers must have been entered incorrectly\u003c/b\u003e.\u003c/p\u003e\u003cp\u003eYOUR JOB:  \r\nGiven a list (vector) of integer percentages, determine whether among the individual values at least one of them \u003ci\u003emust\u003c/i\u003e have been incorrectly entered (return \u003ctt\u003etrue\u003c/tt\u003e), as in Example 2, or whether there might not be any incorrect entries (return \u003ctt\u003efalse\u003c/tt\u003e), as in Example 1.\u003c/p\u003e","function_template":"% \"May not sum to total due to rounding: the probability of rounding errors\"\r\n% Henry Bottomley, 03 June 2008\r\n% http://www.se16.info/hgb/rounding.pdf\r\n\r\n% \"How to make rounded percentages add up to 100%\"\r\n% https://stackoverflow.com/questions/13483430/how-to-make-rounded-percentages-add-up-to-100\r\n% cf. https://stackoverflow.com/questions/5227215/how-to-deal-with-the-sum-of-rounded-percentage-not-being-100\r\nfunction containsMistake = checkForMistake(z)\r\n    containsMistake = true * + false,\r\nend","test_suite":"%% Basics\r\nassessFunctionAbsence({'regexp', 'regexpi'}, 'FileName','checkForMistake.m')\r\n\r\n%% Example 1 (Row vector)\r\nxVec = round( 100*[5 1 5]/11 );\r\ncontainsMistake = false;\r\nassert( isequal(checkForMistake(xVec), containsMistake) )\r\n\r\n%% Example 1 (Column vector)\r\nxVec = round( 100*[5 1 5]/11 )';\r\ncontainsMistake = false;\r\nassert( isequal(checkForMistake(xVec), containsMistake) )\r\n\r\n%% Example 2 (Row vector)\r\nxVec = [42 20 45];\r\ncontainsMistake = true;\r\nassert( isequal(checkForMistake(xVec), containsMistake) )\r\n\r\n%% One percentage, over and under\r\nxVec = [100];\r\ncontainsMistake = false;\r\nassert( isequal(checkForMistake(xVec), containsMistake) , 'Failed test a')\r\nxVec = round([100.5]);\r\ncontainsMistake = true;\r\nassert( isequal(checkForMistake(xVec), containsMistake) , 'Failed test b')\r\nxVec = round([99.49]);\r\ncontainsMistake = true;\r\nassert( isequal(checkForMistake(xVec), containsMistake) , 'Failed test c')\r\n\r\n%% Two percentages, over and under\r\nxVec = [50 50];\r\ncontainsMistake = false;\r\nassert( isequal(checkForMistake(xVec), containsMistake) , 'Failed test a')\r\nxVec = round([49.5 50.5]);\r\ncontainsMistake = false;\r\nassert( isequal(checkForMistake(xVec), containsMistake) , 'Failed test b')\r\nxVec = round([50.5 50.5]);\r\ncontainsMistake = true;\r\nassert( isequal(checkForMistake(xVec), containsMistake) , 'Failed test c')\r\nxVec = round([49.49 50.49]);\r\ncontainsMistake = true;\r\nassert( isequal(checkForMistake(xVec), containsMistake) , 'Failed test d')\r\n\r\n%% Equal percentages\r\nfor j = [2:250 1000:1000:10000]\r\n    xVec = round( repelem(100/j, j) );\r\n    containsMistake = false;\r\n    assert( isequal(checkForMistake(xVec), containsMistake) )\r\nend;\r\n\r\n%% Geometric series (from Bottomley, §5)\r\nfor j = 10:30\r\n    xVec = round( 10 * (9/10).^[0:j] );\r\n    containsMistake = j \u003c 21;\r\n    assert( isequal(checkForMistake(xVec), containsMistake) )\r\nend;\r\n\r\n%% Geometric series (from Bottomley, §5), permuted\r\nfor j = 2:40\r\n    xVec = round( 10 * (9/10).^[0:j] );\r\n    xVec = xVec( randperm(j+1) );\r\n    containsMistake = j \u003c 21;\r\n    assert( isequal(checkForMistake(xVec), containsMistake) )\r\nend;\r\n\r\n%% Other geometric series (permuted) I\r\nfor j = 2:100\r\n    xVec = round( (99/100).^[0:j] );\r\n    xVec = xVec( randperm(j+1) );\r\n    containsMistake = j \u003c 66;\r\n    assert( isequal(checkForMistake(xVec), containsMistake) )\r\nend;\r\n\r\n%% Other geometric series (permuted) II\r\nfor j = 2:30\r\n    xVec = round( 20 * (4/5).^[0:j] );\r\n    xVec = xVec( randperm(j+1) );\r\n    containsMistake = j \u003c 12;\r\n    assert( isequal(checkForMistake(xVec), containsMistake) )\r\nend;\r\n\r\n%% Other geometric series (permuted) III\r\nfor j = 2:20\r\n    xVec = round( 25 * (3/4).^[0:j] );\r\n    xVec = xVec( randperm(j+1) );\r\n    containsMistake = j \u003c 10;\r\n    assert( isequal(checkForMistake(xVec), containsMistake) )\r\nend;\r\n\r\n%% Other geometric series (permuted) IV\r\nfor j = 2:20\r\n    xVec = round( 50 * (1/2).^[0:j] );\r\n    xVec = xVec( randperm(j+1) );\r\n    containsMistake = j \u003c 5;\r\n    assert( isequal(checkForMistake(xVec), containsMistake) )\r\nend;\r\n\r\n%% Systematic overestimation\r\nfor j = 2:100\r\n    num = randi(round(100/j)+1) - 1;\r\n    xRaw = repelem(num+0.5, j);   % cf. https://oletus.github.io/float16-simulator.js/\r\n    sm = sum(xRaw);\r\n    xRaw = [xRaw max(100-sm, 0)];\r\n    if sm \u003e 100.5,                % Not sm\u003e100, because need to account for extra zero added.\r\n        containsMistake = true;\r\n    else\r\n        containsMistake = false;\r\n    end;\r\n    xVec = round( xRaw );\r\n    xVec = xVec( randperm(j+1) );\r\n    assert( isequal(checkForMistake(xVec), containsMistake) , ['Failed with xRaw = ' num2str(xRaw)] )\r\nend;\r\n\r\n%% Systematic underestimation\r\nfor j = 2:100\r\n    num = randi(round(100/j)+1) - 1;\r\n    xRaw = repelem(num+0.499755859375, j);   % cf. https://oletus.github.io/float16-simulator.js/ \u0026 https://au.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html\r\n    cs = cumsum(xRaw);\r\n    if cs(end) \u003e 100,\r\n        xRaw( cs \u003e 100 ) = [];\r\n        containsMistake = true;\r\n    else\r\n        xRaw = [xRaw (100-cs(end))];\r\n        containsMistake = false;\r\n    end;\r\n    xVec = round( xRaw );\r\n    assert( isequal(checkForMistake(xVec), containsMistake) , ['Failed with xRaw = ' num2str(xRaw)] )\r\nend;","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":64439,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":3,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2018-03-23T08:02:20.000Z","updated_at":"2018-03-24T13:53:40.000Z","published_at":"2018-03-24T13:53:40.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ePercentages\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e are commonly\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003erounded\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e when presented in tables. As a result, the sum of the individual numbers does not always add up to 100%. A warning is therefore sometimes appended to such tables, along the lines:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"Percentages may not total 100 due to rounding\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eEXAMPLE 1: A survey of eleven people for their opinion on a new policy found five to be in favour, five opposed, and one undecided/neutral. Percentage-wise this becomes\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[In favour:          45% (5 of 11)\\nUndecided/neutral:   9% (1 of 11)  \\nOpposed:            45% (5 of 11)]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe total of these is 99%, rather than the expected 100%. Despite this conflict, in this example\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eall of the individual numbers have been correctly entered\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eEXAMPLE 2: In the same report, a survey of a further ten people on a different policy found four to be in favour, four opposed, and two undecided/neutral. Suppose the data were presented in the following table\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[In favour:          45%\\nUndecided/neutral:  20%\\nOpposed:            45%]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eGiven the background information, we would quickly recognise this as inconsistent, with a spurious total of 110%, rather than the expected 100%. In fact, we would probably guess that a copy-and-paste mistake had occurred. However, it is important to realise that even if we looked at this table alone, in isolation, without any background knowledge of the survey size or the true number of responses in any category, just by knowing that there are only three categories we can firmly conclude that in this example\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eone or more of the individual numbers must have been entered incorrectly\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYOUR JOB: Given a list (vector) of integer percentages, determine whether among the individual values at least one of them\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003emust\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e have been incorrectly entered (return\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003etrue\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e), as in Example 2, or whether there might not be any incorrect entries (return\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003efalse\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e), as in Example 1.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"}],"problem_search":{"errors":[],"problems":[{"id":44690,"title":"Comparison of floating-point numbers (doubles)","description":"\u003chttps://au.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html Floating-point numbers\u003e cannot generally be represented exactly, so it is usually inappropriate to test for 'equality' between two floating-point numbers.  Rather, it is generally appropriate to check whether the difference between the two numbers is sufficiently small that they can be considered practically equal.  (In other words, so close in value that any differences could be explained by inherent limitations of computations using floating-point numbers.) \r\n \r\nBased on two scalar inputs of type \u003chttps://au.mathworks.com/help/matlab/ref/double.html double\u003e, namely |A| and |B|, you must return a scalar \u003chttps://au.mathworks.com/help/matlab/ref/logical.html logical\u003e output set to \u003chttps://au.mathworks.com/help/matlab/ref/true.html |true|\u003e if the difference in magnitude between |A| and |B| is 'small', or otherwise set to \u003chttps://au.mathworks.com/help/matlab/ref/false.html |false|\u003e.  \r\n\r\nFor _this_ problem \"small\" shall be defined as no more than ten times _ε_, in which _ε_ is the larger of _ε_₁ \u0026 _ε_₂, and _ε_₁ is the \u003chttps://au.mathworks.com/help/matlab/ref/eps.html floating-point precision\u003e with which |A| is represented, and _ε_₂ is the precision with which |B| is represented.  \r\n\r\nEXAMPLE:\r\n\r\n  % Input\r\n  A = 0\r\n  B = 1E-50\r\n\r\n  % Output\r\n  practicallyEqual = false\r\n\r\nExplanation:  |A| is represented with a precision of _ε_₁ = 2⁻¹⁰⁷⁴, whereas |B| is represented with a precision of _ε_₂ = 2⁻²¹⁹.  Thus _ε_ = 2⁻²¹⁹, and the threshold is 10×2⁻²¹⁹.  The difference between |A| and |B| is 1×10⁻⁵⁰, and this difference exceeds the threshold.  Thus |A| and |B| are _not_ practically equal in this example.  \r\n\r\nRELATED PROBLEMS:\r\n\r\n* \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44691 Problem 44691. Comparison of floating-point numbers (singles)\u003e\r\n* \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44631 Problem 44631: Make your own Test Suite (part 0)\u003e\r\n* \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44513 Problem 44513:  Add all the numbers between two limits (inclusive)\u003e","description_html":"\u003cp\u003e\u003ca href = \"https://au.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html\"\u003eFloating-point numbers\u003c/a\u003e cannot generally be represented exactly, so it is usually inappropriate to test for 'equality' between two floating-point numbers.  Rather, it is generally appropriate to check whether the difference between the two numbers is sufficiently small that they can be considered practically equal.  (In other words, so close in value that any differences could be explained by inherent limitations of computations using floating-point numbers.)\u003c/p\u003e\u003cp\u003eBased on two scalar inputs of type \u003ca href = \"https://au.mathworks.com/help/matlab/ref/double.html\"\u003edouble\u003c/a\u003e, namely \u003ctt\u003eA\u003c/tt\u003e and \u003ctt\u003eB\u003c/tt\u003e, you must return a scalar \u003ca href = \"https://au.mathworks.com/help/matlab/ref/logical.html\"\u003elogical\u003c/a\u003e output set to \u003ca href = \"https://au.mathworks.com/help/matlab/ref/true.html\"\u003e\u003ctt\u003etrue\u003c/tt\u003e\u003c/a\u003e if the difference in magnitude between \u003ctt\u003eA\u003c/tt\u003e and \u003ctt\u003eB\u003c/tt\u003e is 'small', or otherwise set to \u003ca href = \"https://au.mathworks.com/help/matlab/ref/false.html\"\u003e\u003ctt\u003efalse\u003c/tt\u003e\u003c/a\u003e.\u003c/p\u003e\u003cp\u003eFor \u003ci\u003ethis\u003c/i\u003e problem \"small\" shall be defined as no more than ten times \u003ci\u003eε\u003c/i\u003e, in which \u003ci\u003eε\u003c/i\u003e is the larger of \u003ci\u003eε\u003c/i\u003e₁ \u0026 \u003ci\u003eε\u003c/i\u003e₂, and \u003ci\u003eε\u003c/i\u003e₁ is the \u003ca href = \"https://au.mathworks.com/help/matlab/ref/eps.html\"\u003efloating-point precision\u003c/a\u003e with which \u003ctt\u003eA\u003c/tt\u003e is represented, and \u003ci\u003eε\u003c/i\u003e₂ is the precision with which \u003ctt\u003eB\u003c/tt\u003e is represented.\u003c/p\u003e\u003cp\u003eEXAMPLE:\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003e% Input\r\nA = 0\r\nB = 1E-50\r\n\u003c/pre\u003e\u003cpre class=\"language-matlab\"\u003e% Output\r\npracticallyEqual = false\r\n\u003c/pre\u003e\u003cp\u003eExplanation:  \u003ctt\u003eA\u003c/tt\u003e is represented with a precision of \u003ci\u003eε\u003c/i\u003e₁ = 2⁻¹⁰⁷⁴, whereas \u003ctt\u003eB\u003c/tt\u003e is represented with a precision of \u003ci\u003eε\u003c/i\u003e₂ = 2⁻²¹⁹.  Thus \u003ci\u003eε\u003c/i\u003e = 2⁻²¹⁹, and the threshold is 10×2⁻²¹⁹.  The difference between \u003ctt\u003eA\u003c/tt\u003e and \u003ctt\u003eB\u003c/tt\u003e is 1×10⁻⁵⁰, and this difference exceeds the threshold.  Thus \u003ctt\u003eA\u003c/tt\u003e and \u003ctt\u003eB\u003c/tt\u003e are \u003ci\u003enot\u003c/i\u003e practically equal in this example.\u003c/p\u003e\u003cp\u003eRELATED PROBLEMS:\u003c/p\u003e\u003cul\u003e\u003cli\u003e\u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44691\"\u003eProblem 44691. Comparison of floating-point numbers (singles)\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44631\"\u003eProblem 44631: Make your own Test Suite (part 0)\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44513\"\u003eProblem 44513:  Add all the numbers between two limits (inclusive)\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e","function_template":"function practicallyEqual = compareDoubles(A, B)\r\n    \r\nend","test_suite":"%% No silly stuff\r\nassessFunctionAbsence({'regexp', 'regexpi'}, 'FileName','compareDoubles.m')\r\n\r\nRE = regexp(fileread('compareDoubles.m'), '\\w+', 'match');\r\ntabooWords = {'ans'};\r\ntestResult = cellfun( @(z) ismember(z, tabooWords), RE );\r\nmsg = ['Please do not do that in your code!' char([10 13]) ...\r\n    'Found: ' strjoin(RE(testResult)) '.' char([10 13]) ...\r\n    'Banned word.' char([10 13])];\r\nassert(~any(  cellfun( @(z) ismember(z, tabooWords), RE )  ), msg)\r\n\r\n%% Zero and small positive numbers\r\nA = 0;\r\n% Note:  realmin ≈ 2.2251E-308\r\nbVec   = [1E-50, 1E-300, 2.2E-308, 1E-322, 9E-323, 6E-323, 5E-323, 4E-323, 2E-323, 9E-324, 5E-324, 0];\r\nansVec = [false, false,  false,    false,  false,  false,   true,   true,  true,   true,   true,   true];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareDoubles(A, B);\r\n    practicallyEqual2 = compareDoubles(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n%% Zero and small negative numbers\r\nA = 0;\r\nbVec   = -[1E-50, 1E-300, 2.2E-308, 1E-322, 9E-323, 6E-323, 5E-323, 4E-323, 2E-323, 9E-324, 5E-324];\r\nansVec =  [false, false,  false,    false,  false,  false,   true,   true,  true,   true,   true];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareDoubles(A, B);\r\n    practicallyEqual2 = compareDoubles(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n\r\n%% Both roughly equal to positive one\r\nA = 1.1 + rand()/2;\r\nbVec   = A  +  2.^[-2 : -0.5 : -102];\r\nansVec = [repelem(false, 94) repelem(true, 107)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareDoubles(A, B);\r\n    practicallyEqual2 = compareDoubles(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n%% Both roughly equal to negative one hundred\r\nA = -104 + rand();\r\nbVec   = A  +  2.^[+2 : -0.5 : -98];\r\nansVec = [repelem(false, 90) repelem(true, 111)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareDoubles(A, B);\r\n    practicallyEqual2 = compareDoubles(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n\r\n%% Both roughly equal to positive one trillion (long scale) https://en.wikipedia.org/wiki/Long_and_short_scales\r\nA = 1E18 + randi(1E14);\r\nbVec   = A  +  2.^[57 : -0.5 : -43];\r\nansVec = [repelem(false, 94) repelem(true, 107)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareDoubles(A, B);\r\n    practicallyEqual2 = compareDoubles(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n%% Both roughly equal to negative one trillion (long scale) https://en.wikipedia.org/wiki/Long_and_short_scales\r\nA = -1E18 - randi(1E14);\r\nbVec   = A  -  2.^[57 : -0.5 : -43];\r\nansVec = [repelem(false, 94) repelem(true, 107)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareDoubles(A, B);\r\n    practicallyEqual2 = compareDoubles(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n","published":true,"deleted":false,"likes_count":2,"comments_count":2,"created_by":64439,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":17,"test_suite_updated_at":"2018-06-17T02:10:55.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2018-06-16T14:31:50.000Z","updated_at":"2026-03-19T08:46:04.000Z","published_at":"2018-06-17T02:10:55.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eFloating-point numbers\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e cannot generally be represented exactly, so it is usually inappropriate to test for 'equality' between two floating-point numbers. Rather, it is generally appropriate to check whether the difference between the two numbers is sufficiently small that they can be considered practically equal. (In other words, so close in value that any differences could be explained by inherent limitations of computations using floating-point numbers.)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eBased on two scalar inputs of type\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/double.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003edouble\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e, namely\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, you must return a scalar\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/logical.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003elogical\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e output set to\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/true.html\\\"\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003etrue\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e if the difference in magnitude between\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is 'small', or otherwise set to\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/false.html\\\"\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003efalse\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFor\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ethis\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e problem \\\"small\\\" shall be defined as no more than ten times\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, in which\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is the larger of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₁ \u0026amp;\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₂, and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₁ is the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/eps.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003efloating-point precision\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e with which\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is represented, and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₂ is the precision with which\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is represented.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eEXAMPLE:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[% Input\\nA = 0\\nB = 1E-50\\n\\n% Output\\npracticallyEqual = false]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExplanation: \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is represented with a precision of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₁ = 2⁻¹⁰⁷⁴, whereas\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is represented with a precision of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₂ = 2⁻²¹⁹. Thus\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e = 2⁻²¹⁹, and the threshold is 10×2⁻²¹⁹. The difference between\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is 1×10⁻⁵⁰, and this difference exceeds the threshold. Thus\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e are\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003enot\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e practically equal in this example.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eRELATED PROBLEMS:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44691\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 44691. Comparison of floating-point numbers (singles)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44631\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 44631: Make your own Test Suite (part 0)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44513\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 44513: Add all the numbers between two limits (inclusive)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":44691,"title":"Comparison of floating-point numbers (singles)","description":"Floating-point numbers cannot generally be represented exactly, so it is usually inappropriate to test for 'equality' between two floating-point numbers. Rather, it is generally appropriate to check whether the difference between the two numbers is sufficiently small that they can be considered practically equal. (In other words, so close in value that any differences could be explained by inherent limitations of computations using floating-point numbers.)\r\nBased on two scalar inputs of type double, namely A and B, you must return a scalar logical output set to true if the difference in magnitude between the single-precision representations of A and B is 'small', or otherwise set to false.\r\nFor this problem \"small\" shall mean no more than Δ, which is defined as the larger of δ and ten times ε. In turn, δ has a fixed value of 1×10⁻¹⁰ and ε is the larger of ε₁ \u0026 ε₂, where ε₁ is the floating-point precision with which A is represented, and ε₂ is the precision with which B is represented.\r\nEXAMPLE:\r\n% Input\r\nA = 0\r\nB = 1E-20\r\n\r\n% Output\r\npracticallyEqual = true\r\nExplanation: When represented as single values, A is represented with a precision of ε₁ = 2⁻¹⁴⁹, whereas B is represented with a precision of ε₂ = 2⁻⁹⁰. Thus ε = 2⁻⁹⁰; however the threshold Δ is 1×10⁻¹⁰ for this situation, because 1×10⁻¹⁰ \u003e 10×2⁻⁹⁰. The difference between A and B is 1×10⁻²⁰, and this difference does not exceed the threshold. Thus A and B are practically equal in this example.\r\nRELATED PROBLEMS:  \r\nProblem 44690: Comparison of floating-point numbers (doubles)\r\nProblem 44631: Make your own Test Suite (part 0)\r\nProblem 44513: Add all the numbers between two limits (inclusive)","description_html":"\u003cdiv style = \"text-align: start; line-height: 20.44px; min-height: 0px; white-space: normal; color: rgb(0, 0, 0); font-family: Menlo, Monaco, Consolas, monospace; font-style: normal; font-size: 14px; font-weight: 400; text-decoration: none solid rgb(0, 0, 0); white-space: normal; \"\u003e\u003cdiv style=\"block-size: 561px; display: block; min-width: 0px; padding-block-start: 0px; padding-top: 0px; perspective-origin: 407px 280.5px; transform-origin: 407px 280.5px; vertical-align: baseline; \"\u003e\u003cdiv style=\"block-size: 84px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 42px; text-align: left; transform-origin: 384px 42px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003ca target='_blank' href = \"https://au.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eFloating-point numbers\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e cannot generally be represented exactly, so it is usually inappropriate to test for 'equality' between two floating-point numbers. Rather, it is generally appropriate to check whether the difference between the two numbers is sufficiently small that they can be considered practically equal. (In other words, so close in value that any differences could be explained by inherent limitations of computations using floating-point numbers.)\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 42px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 21px; text-align: left; transform-origin: 384px 21px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eBased on two scalar inputs of type\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://au.mathworks.com/help/matlab/ref/double.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003edouble\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e, namely\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eA\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e and\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eB\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e, you must return a scalar\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://au.mathworks.com/help/matlab/ref/logical.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003elogical\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e output set to\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://au.mathworks.com/help/matlab/ref/true.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003etrue\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e if the difference in magnitude between\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003ethe\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://au.mathworks.com/help/matlab/ref/single.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"font-weight: 700; \"\u003esingle\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-weight: 700; \"\u003e-precision representations\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e of\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eA\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e and\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eB\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e is 'small', or otherwise set to\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://au.mathworks.com/help/matlab/ref/false.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003efalse\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 63px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 31.5px; text-align: left; transform-origin: 384px 31.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eFor\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003ethis\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e problem \"small\" shall mean no more than\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eΔ\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e, which is defined as the larger of\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eδ\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e and ten times\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eε\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e. In turn,\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eδ\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e has a fixed value of 1×10⁻¹⁰ and\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eε\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e is the larger of\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eε\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e₁ \u0026amp;\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eε\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e₂, where\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eε\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e₁ is the\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003ca target='_blank' href = \"https://au.mathworks.com/help/matlab/ref/eps.html\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003efloating-point precision\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e with which\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eA\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e is represented, and\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eε\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e₂ is the precision with which\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eB\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e is represented.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eEXAMPLE:\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgb(247, 247, 247); block-size: 120px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-end-end-radius: 4px; border-end-start-radius: 4px; border-start-end-radius: 4px; border-start-start-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-block-end: 10px; margin-block-start: 10px; margin-bottom: 10px; margin-inline-end: 3px; margin-inline-start: 3px; margin-left: 3px; margin-right: 3px; margin-top: 10px; perspective-origin: 404px 60px; transform-origin: 404px 60px; margin-left: 3px; margin-top: 10px; margin-bottom: 10px; margin-right: 3px; \"\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10px; transform-origin: 404px 10px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"border-block-end-color: rgb(2, 128, 9); border-block-start-color: rgb(2, 128, 9); border-bottom-color: rgb(2, 128, 9); border-inline-end-color: rgb(2, 128, 9); border-inline-start-color: rgb(2, 128, 9); border-left-color: rgb(2, 128, 9); border-right-color: rgb(2, 128, 9); border-top-color: rgb(2, 128, 9); caret-color: rgb(2, 128, 9); color: rgb(2, 128, 9); column-rule-color: rgb(2, 128, 9); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(2, 128, 9); text-decoration: none; text-decoration-color: rgb(2, 128, 9); \"\u003e% Input\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10px; transform-origin: 404px 10px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003eA = 0\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10px; transform-origin: 404px 10px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003eB = 1E-20\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10px; transform-origin: 404px 10px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10px; transform-origin: 404px 10px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"border-block-end-color: rgb(2, 128, 9); border-block-start-color: rgb(2, 128, 9); border-bottom-color: rgb(2, 128, 9); border-inline-end-color: rgb(2, 128, 9); border-inline-start-color: rgb(2, 128, 9); border-left-color: rgb(2, 128, 9); border-right-color: rgb(2, 128, 9); border-top-color: rgb(2, 128, 9); caret-color: rgb(2, 128, 9); color: rgb(2, 128, 9); column-rule-color: rgb(2, 128, 9); margin-inline-end: 0px; margin-right: 0px; outline-color: rgb(2, 128, 9); text-decoration: none; text-decoration-color: rgb(2, 128, 9); \"\u003e% Output\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"background-color: rgba(0, 0, 0, 0); block-size: 20px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-end-end-radius: 0px; border-end-start-radius: 0px; border-inline-end-color: rgb(233, 233, 233); border-inline-end-style: solid; border-inline-end-width: 1px; border-inline-start-color: rgb(233, 233, 233); border-inline-start-style: solid; border-inline-start-width: 1px; border-left-color: rgb(233, 233, 233); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(233, 233, 233); border-right-style: solid; border-right-width: 1px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; min-block-size: 18px; min-height: 18px; padding-inline-start: 4px; padding-left: 4px; perspective-origin: 404px 10px; transform-origin: 404px 10px; white-space: nowrap; \"\u003e\u003cspan style=\"block-size: auto; border-inline-end-color: rgb(0, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(0, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(0, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(0, 0, 0); border-right-style: none; border-right-width: 0px; display: inline; margin-inline-end: 45px; margin-right: 45px; min-block-size: 0px; min-height: 0px; padding-inline-start: 0px; padding-left: 0px; perspective-origin: 0px 0px; tab-size: 4; transform-origin: 0px 0px; white-space: pre; margin-right: 45px; \"\u003e\u003cspan style=\"margin-inline-end: 0px; margin-right: 0px; \"\u003epracticallyEqual = true\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 84px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 10px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 10px; perspective-origin: 384px 42px; text-align: left; transform-origin: 384px 42px; white-space: pre-wrap; margin-left: 4px; margin-top: 10px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eExplanation: When represented as\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003esingle\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e values,\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eA\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e is represented with a precision of\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eε\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e₁ = 2⁻¹⁴⁹, whereas\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eB\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e is represented with a precision of\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eε\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e₂ = 2⁻⁹⁰. Thus\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eε\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e = 2⁻⁹⁰; however the threshold\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eΔ\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e is 1×10⁻¹⁰ for this situation, because 1×10⁻¹⁰ \u0026gt; 10×2⁻⁹⁰. The difference between\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eA\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e and\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eB\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e is 1×10⁻²⁰, and this difference does not exceed the threshold. Thus\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eA\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e and\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-family: Menlo, Monaco, Consolas, \u0026quot;Courier New\u0026quot;, monospace; \"\u003eB\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e \u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"font-style: italic; \"\u003eare\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003e practically equal in this example.\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cdiv style=\"block-size: 21px; font-family: Helvetica, Arial, sans-serif; line-height: 21px; margin-block-end: 9px; margin-block-start: 2px; margin-bottom: 9px; margin-inline-end: 10px; margin-inline-start: 4px; margin-left: 4px; margin-right: 10px; margin-top: 2px; perspective-origin: 384px 10.5px; text-align: left; transform-origin: 384px 10.5px; white-space: pre-wrap; margin-left: 4px; margin-top: 2px; margin-bottom: 9px; margin-right: 10px; \"\u003e\u003cspan style=\"block-size: auto; display: inline; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; perspective-origin: 0px 0px; transform-origin: 0px 0px; \"\u003e\u003cspan style=\"\"\u003eRELATED PROBLEMS:  \u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\u003cul style=\"block-size: 60px; font-family: Helvetica, Arial, sans-serif; list-style-type: square; margin-block-end: 20px; margin-block-start: 10px; margin-bottom: 20px; margin-top: 10px; perspective-origin: 391px 30px; transform-origin: 391px 30px; margin-top: 10px; margin-bottom: 20px; \"\u003e\u003cli style=\"block-size: 20px; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10px; text-align: left; transform-origin: 363px 10px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003ca target='_blank' href = \"https://www.mathworks.com/matlabcentral/cody/problems/44690\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eProblem 44690: Comparison of floating-point numbers (doubles)\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003c/li\u003e\u003cli style=\"block-size: 20px; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10px; text-align: left; transform-origin: 363px 10px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003ca target='_blank' href = \"https://www.mathworks.com/matlabcentral/cody/problems/44631\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eProblem 44631: Make your own Test Suite (part 0)\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003c/li\u003e\u003cli style=\"block-size: 20px; display: list-item; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-start: 56px; margin-left: 56px; margin-top: 0px; perspective-origin: 363px 10px; text-align: left; transform-origin: 363px 10px; white-space: pre-wrap; margin-left: 56px; \"\u003e\u003ca target='_blank' href = \"https://www.mathworks.com/matlabcentral/cody/problems/44513\"\u003e\u003cspan style=\"\"\u003e\u003cspan style=\"\"\u003eProblem 44513: Add all the numbers between two limits (inclusive)\u003c/span\u003e\u003c/span\u003e\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\u003c/div\u003e\u003c/div\u003e","function_template":"function practicallyEqual = compareSingles(A, B)\r\n    \r\nend","test_suite":"%% No silly stuff\r\n% Statements to allow the user to name their function either \"compareSingles\" or \"compareDoubles\". \r\nfnName = 'compareSingles.m';    try,    pE = compareSingles(1, 1);    catch err;    errID = err.identifier;    if strcmp(errID, 'MATLAB:UndefinedFunction'),    fnName = 'compareDoubles.m';    else    rethrow(err);    end;    end;\r\n\r\nassessFunctionAbsence({'regexp', 'regexpi'}, 'FileName',fnName)\r\n\r\nRE = regexp(fileread(fnName), '\\w+', 'match');\r\ntabooWords = {'ans'};\r\ntestResult = cellfun( @(z) ismember(z, tabooWords), RE );\r\nmsg = ['Please do not do that in your code!' char([10 13]) ...\r\n    'Found: ' strjoin(RE(testResult)) '.' char([10 13]) ...\r\n    'Banned word.' char([10 13])];\r\nassert(~any(  cellfun( @(z) ismember(z, tabooWords), RE )  ), msg)\r\n\r\n\r\n%% Zero and small positive numbers\r\nA = 0;\r\n% Note:  realmin ≈ 1.1755e-38\r\nbVec   = logspace(-1, -51, 101);\r\nansVec = [repelem(false, 18) repelem(true, 83)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareNums(A, B);\r\n    practicallyEqual2 = compareNums(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n% A function with try and catch blocks to allow the user to name their function either \"compareSingles\" or \"compareDoubles\". \r\nfunction pE = compareNums(a, b),    try,    pE = compareSingles(a, b);    catch err;    errID = err.identifier;    if strcmp(errID, 'MATLAB:UndefinedFunction'),    pE = compareDoubles(a, b);    else    rethrow(err);    end;    end;    end\r\n\r\n%% Zero and small negative numbers\r\nA = 0;\r\nbVec   = -logspace(-1, -51, 101);\r\nansVec = [repelem(false, 18) repelem(true, 83)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareNums(A, B);\r\n    practicallyEqual2 = compareNums(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n% A function with try and catch blocks to allow the user to name their function either \"compareSingles\" or \"compareDoubles\". \r\nfunction pE = compareNums(a, b),    try,    pE = compareSingles(a, b);    catch err;    errID = err.identifier;    if strcmp(errID, 'MATLAB:UndefinedFunction'),    pE = compareDoubles(a, b);    else    rethrow(err);    end;    end;    end\r\n\r\n\r\n%% One epsilon value above delta/10, one sometimes below.\r\nA = 0.00048828125;\r\nbVec   = A  -  2.^[-11 : -0.5 : -100];\r\nansVec = [repelem(false, 40) repelem(true, 161)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareNums(A, B);\r\n    practicallyEqual2 = compareNums(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n% A function with try and catch blocks to allow the user to name their function either \"compareSingles\" or \"compareDoubles\". \r\nfunction pE = compareNums(a, b),    try,    pE = compareSingles(a, b);    catch err;    errID = err.identifier;    if strcmp(errID, 'MATLAB:UndefinedFunction'),    pE = compareDoubles(a, b);    else    rethrow(err);    end;    end;    end\r\n\r\n\r\n%% Both roughly equal to positive one\r\nA = 1.1 + rand()/2;\r\nbVec   = A  +  2.^[-2 : -0.5 : -102];\r\nansVec = [repelem(false, 36) repelem(true, 165)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareNums(A, B);\r\n    practicallyEqual2 = compareNums(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n% A function with try and catch blocks to allow the user to name their function either \"compareSingles\" or \"compareDoubles\". \r\nfunction pE = compareNums(a, b),    try,    pE = compareSingles(a, b);    catch err;    errID = err.identifier;    if strcmp(errID, 'MATLAB:UndefinedFunction'),    pE = compareDoubles(a, b);    else    rethrow(err);    end;    end;    end\r\n\r\n\r\n%% Both roughly equal to negative one hundred\r\nA = -104 + rand();\r\nbVec   = A  +  2.^[+2 : -0.5 : -98];\r\nansVec = [repelem(false, 32) repelem(true, 169)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareNums(A, B);\r\n    practicallyEqual2 = compareNums(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n% A function with try and catch blocks to allow the user to name their function either \"compareSingles\" or \"compareDoubles\". \r\nfunction pE = compareNums(a, b),    try,    pE = compareSingles(a, b);    catch err;    errID = err.identifier;    if strcmp(errID, 'MATLAB:UndefinedFunction'),    pE = compareDoubles(a, b);    else    rethrow(err);    end;    end;    end\r\n\r\n\r\n%% Both roughly equal to positive one trillion (long scale) https://en.wikipedia.org/wiki/Long_and_short_scales\r\nA = 1E18 + randi(1E14);\r\nbVec   = A  +  2.^[57 : -0.5 : -43];\r\nansVec = [repelem(false, 36) repelem(true, 165)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareNums(A, B);\r\n    practicallyEqual2 = compareNums(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n% A function with try and catch blocks to allow the user to name their function either \"compareSingles\" or \"compareDoubles\". \r\nfunction pE = compareNums(a, b),    try,    pE = compareSingles(a, b);    catch err;    errID = err.identifier;    if strcmp(errID, 'MATLAB:UndefinedFunction'),    pE = compareDoubles(a, b);    else    rethrow(err);    end;    end;    end\r\n\r\n%% Both roughly equal to negative one trillion (long scale) https://en.wikipedia.org/wiki/Long_and_short_scales\r\nA = -1E18 - randi(1E14);\r\nbVec   = A  -  2.^[57 : -0.5 : -43];\r\nansVec = [repelem(false, 36) repelem(true, 165)];\r\nfor j = 1 : length(bVec)\r\n    B = bVec(j);\r\n    practicallyEqual1 = compareNums(A, B);\r\n    practicallyEqual2 = compareNums(B, A);\r\n    answer = ansVec(j);\r\n    assert(practicallyEqual1 == answer, 'Wrong classification (1).')\r\n    assert(practicallyEqual2 == answer, 'Wrong classification (2).')\r\n    assert(isequal(class(practicallyEqual1), 'logical'), 'Wrong class.')\r\nend;\r\n\r\n% A function with try and catch blocks to allow the user to name their function either \"compareSingles\" or \"compareDoubles\". \r\nfunction pE = compareNums(a, b),    try,    pE = compareSingles(a, b);    catch err;    errID = err.identifier;    if strcmp(errID, 'MATLAB:UndefinedFunction'),    pE = compareDoubles(a, b);    else    rethrow(err);    end;    end;    end\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":8,"created_by":64439,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":9,"test_suite_updated_at":"2021-07-19T11:54:38.000Z","rescore_all_solutions":false,"group_id":1,"created_at":"2018-06-17T02:32:49.000Z","updated_at":"2025-12-11T05:24:27.000Z","published_at":"2018-06-17T11:25:27.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eFloating-point numbers\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e cannot generally be represented exactly, so it is usually inappropriate to test for 'equality' between two floating-point numbers. Rather, it is generally appropriate to check whether the difference between the two numbers is sufficiently small that they can be considered practically equal. (In other words, so close in value that any differences could be explained by inherent limitations of computations using floating-point numbers.)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eBased on two scalar inputs of type\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/double.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003edouble\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e, namely\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, you must return a scalar\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/logical.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003elogical\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e output set to\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/true.html\\\"\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003etrue\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e if the difference in magnitude between\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ethe\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/single.html\\\"\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003esingle\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e-precision representations\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is 'small', or otherwise set to\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/false.html\\\"\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003efalse\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eFor\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ethis\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e problem \\\"small\\\" shall mean no more than\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eΔ\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, which is defined as the larger of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eδ\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and ten times\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e. In turn,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eδ\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e has a fixed value of 1×10⁻¹⁰ and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is the larger of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₁ \u0026amp;\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₂, where\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₁ is the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/eps.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003efloating-point precision\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e with which\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is represented, and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₂ is the precision with which\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is represented.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eEXAMPLE:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[% Input\\nA = 0\\nB = 1E-20\\n\\n% Output\\npracticallyEqual = true]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExplanation: When represented as\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003esingle\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e values,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is represented with a precision of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₁ = 2⁻¹⁴⁹, whereas\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is represented with a precision of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e₂ = 2⁻⁹⁰. Thus\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eε\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e = 2⁻⁹⁰; however the threshold\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eΔ\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is 1×10⁻¹⁰ for this situation, because 1×10⁻¹⁰ \u0026gt; 10×2⁻⁹⁰. The difference between\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is 1×10⁻²⁰, and this difference does not exceed the threshold. Thus\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eA\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eB\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eare\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e practically equal in this example.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eRELATED PROBLEMS:  \u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44690\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 44690: Comparison of floating-point numbers (doubles)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44631\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 44631: Make your own Test Suite (part 0)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003cw:jc w:val=\\\"left\\\"/\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44513\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 44513: Add all the numbers between two limits (inclusive)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\",\"relationship\":null}],\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"target\":\"/matlab/document.xml\",\"relationshipId\":\"rId1\"}]}"},{"id":44513,"title":"Add all the numbers between two limits (inclusive)","description":"In this problem you must add up \"all of the numbers\" between two specified limits, |a| and |b|, in which |a| ≤ |b|.  However, the practical interpretation of \"all of the numbers\" will depend upon the specified \u003chttps://au.mathworks.com/help/matlab/numeric-types.html data type\u003e, |dt|.  \r\n\r\nMathematically speaking, if |a| \u003c |b| then the required sum constitutes an _infinite series_ that does not converge (i.e. the required sum would be infinity).  For example, if |a=1| and |b=2| then we could capture _some_ of those numbers through the series \r\nlim n→∞  ⁿ∑ᵢ₌₁{1 + (1/i)} = lim n→∞ {n + ⁿ∑ᵢ₌₁(1/i)} ≈ lim n→∞ {n + γ + ln(n)}, using properties of the harmonic series in the last approximation.  \r\n\r\nBut MATLAB cannot represent numbers with _infinite_ precision.  In fact, the precision is determined by the specified \u003chttps://au.mathworks.com/help/matlab/numeric-types.html data type\u003e.  For instance, if |dt = 'single'|, then with |a=1| and |b=2| the summation would comprise the series {(1) + (1+1×2⁻²³) + (1+2×2⁻²³) + (1+3×2⁻²³) + ... + (2−2×2⁻²³) + (2−1×2⁻²³) + (2)} = 12582913.5, which is finite.  \r\n\r\nAnother example:\r\n\r\n % INPUT\r\n a = 10\r\n b = 12\r\n dt = 'int16'\r\n % OUTPUT\r\n s = 33         %  = 10 + 11 +12\r\n\r\nSo please add up all the numbers between two limits (inclusive), subject to the precision indicated by the specified \u003chttps://au.mathworks.com/help/matlab/numeric-types.html data type\u003e.  \r\n\r\n_NOTE *1*:  Terminal values |a| and |b| are whole numbers in every case (albeit implicitly defined as of the |double| data type);  they can be positive or negative.  However, values -1\u003cx\u003c+1 are never included in the summations._  \r\n\r\n_NOTE *2*:  All data types specified in the input |dt| shall be \u003chttps://au.mathworks.com/help/matlab/numeric-types.html numeric\u003e._ ","description_html":"\u003cp\u003eIn this problem you must add up \"all of the numbers\" between two specified limits, \u003ctt\u003ea\u003c/tt\u003e and \u003ctt\u003eb\u003c/tt\u003e, in which \u003ctt\u003ea\u003c/tt\u003e ≤ \u003ctt\u003eb\u003c/tt\u003e.  However, the practical interpretation of \"all of the numbers\" will depend upon the specified \u003ca href = \"https://au.mathworks.com/help/matlab/numeric-types.html\"\u003edata type\u003c/a\u003e, \u003ctt\u003edt\u003c/tt\u003e.\u003c/p\u003e\u003cp\u003eMathematically speaking, if \u003ctt\u003ea\u003c/tt\u003e \u0026lt; \u003ctt\u003eb\u003c/tt\u003e then the required sum constitutes an \u003ci\u003einfinite series\u003c/i\u003e that does not converge (i.e. the required sum would be infinity).  For example, if \u003ctt\u003ea=1\u003c/tt\u003e and \u003ctt\u003eb=2\u003c/tt\u003e then we could capture \u003ci\u003esome\u003c/i\u003e of those numbers through the series \r\nlim n→∞  ⁿ∑ᵢ₌₁{1 + (1/i)} = lim n→∞ {n + ⁿ∑ᵢ₌₁(1/i)} ≈ lim n→∞ {n + γ + ln(n)}, using properties of the harmonic series in the last approximation.\u003c/p\u003e\u003cp\u003eBut MATLAB cannot represent numbers with \u003ci\u003einfinite\u003c/i\u003e precision.  In fact, the precision is determined by the specified \u003ca href = \"https://au.mathworks.com/help/matlab/numeric-types.html\"\u003edata type\u003c/a\u003e.  For instance, if \u003ctt\u003edt = 'single'\u003c/tt\u003e, then with \u003ctt\u003ea=1\u003c/tt\u003e and \u003ctt\u003eb=2\u003c/tt\u003e the summation would comprise the series {(1) + (1+1×2⁻²³) + (1+2×2⁻²³) + (1+3×2⁻²³) + ... + (2−2×2⁻²³) + (2−1×2⁻²³) + (2)} = 12582913.5, which is finite.\u003c/p\u003e\u003cp\u003eAnother example:\u003c/p\u003e\u003cpre\u003e % INPUT\r\n a = 10\r\n b = 12\r\n dt = 'int16'\r\n % OUTPUT\r\n s = 33         %  = 10 + 11 +12\u003c/pre\u003e\u003cp\u003eSo please add up all the numbers between two limits (inclusive), subject to the precision indicated by the specified \u003ca href = \"https://au.mathworks.com/help/matlab/numeric-types.html\"\u003edata type\u003c/a\u003e.\u003c/p\u003e\u003cp\u003e\u003ci\u003eNOTE \u003cb\u003e1\u003c/b\u003e:  Terminal values \u003ctt\u003ea\u003c/tt\u003e and \u003ctt\u003eb\u003c/tt\u003e are whole numbers in every case (albeit implicitly defined as of the \u003ctt\u003edouble\u003c/tt\u003e data type);  they can be positive or negative.  However, values -1\u0026lt;x\u0026lt;+1 are never included in the summations.\u003c/i\u003e\u003c/p\u003e\u003cp\u003e\u003ci\u003eNOTE \u003cb\u003e2\u003c/b\u003e:  All data types specified in the input \u003ctt\u003edt\u003c/tt\u003e shall be \u003ca href = \"https://au.mathworks.com/help/matlab/numeric-types.html\"\u003enumeric\u003c/a\u003e.\u003c/i\u003e\u003c/p\u003e","function_template":"function s = summation(a, b, dt)\r\n    \r\nend","test_suite":"%%\r\na = 1;\r\nb = 2;\r\ndt = 'uint64';\r\ns_correct = 3;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 1;\r\nb = 2;\r\ndt = 'int8';\r\ns_correct = 3;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 1;\r\nb = 2;\r\ndt = 'single';\r\ns_correct = 12582913.5;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 2 )\r\n\r\n%%\r\na = 1;\r\nb = 2;\r\ndt = 'double';\r\ns_correct = 6755399441055746;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 2 )\r\n\r\n\r\n%%\r\na = 2;\r\nb = 3;\r\ndt = 'int32';\r\ns_correct = 5;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 2;\r\nb = 3;\r\ndt = 'uint16';\r\ns_correct = 5;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 2;\r\nb = 3;\r\ndt = 'single';\r\ns_correct = 10485762.5;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 2 )\r\n\r\n%%\r\na = 2;\r\nb = 3;\r\ndt = 'double';\r\ns_correct = 5629499534213122;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 2 )\r\n\r\n\r\n%%\r\na = 4;\r\nb = 5;\r\ndt = 'int64';\r\ns_correct = 9;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 4;\r\nb = 5;\r\ndt = 'uint8';\r\ns_correct = 9;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 4;\r\nb = 5;\r\ndt = 'single';\r\ns_correct = 9437188.5;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 2 )\r\n\r\n%%\r\na = 4;\r\nb = 5;\r\ndt = 'double';\r\ns_correct = 5066549580791812;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 2 )\r\n\r\n\r\n%%\r\na = 8;\r\nb = 9;\r\ndt = 'uint32';\r\ns_correct = 17;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 8;\r\nb = 9;\r\ndt = 'int16';\r\ns_correct = 17;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 8;\r\nb = 9;\r\ndt = 'single';\r\ns_correct = 8912904.5;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 2 )\r\n\r\n%%\r\na = 8;\r\nb = 9;\r\ndt = 'double';\r\ns_correct = 4785074604081160;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 2 )\r\n\r\n\r\n%%\r\na = 20;\r\nb = 22;\r\ndt = 'int32';\r\ns_correct = 63;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 20;\r\nb = 22;\r\ndt = 'double';\r\ns_correct = 11821949021847573;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 4 )\r\n\r\n%%\r\na = 20;\r\nb = 22;\r\ndt = 'single';\r\ns_correct = 22020117;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 4 )\r\n\r\n\r\n%%\r\na = 20;\r\nb = 30;\r\ndt = 'uint16';\r\ns_correct = 275;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 20;\r\nb = 30;\r\ndt = 'double';\r\ns_correct = 70368744177664025;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 32 )\r\n\r\n%%\r\na = 20;\r\nb = 30;\r\ndt = 'single';\r\ns_correct = 131072025;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 32 )\r\n\r\n\r\n%%\r\na = 1;\r\nb = 17;\r\ndt = 'uint8';\r\ns_correct = 153;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = 1;\r\nb = 17;\r\ndt = 'double';\r\ns_correct = 105975328731561993;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 64 )\r\n\r\n%%\r\na = 1;\r\nb = 17;\r\ndt = 'single';\r\ns_correct = 197394441;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 64 )\r\n\r\n\r\n%%\r\na = -130;\r\nb = -126;\r\ndt = 'int32';\r\ns_correct = -640;\r\ns = summation(a, b, dt);\r\nassert( isequal(s, s_correct) )\r\n\r\n%%\r\na = -130;\r\nb = -126;\r\ndt = 'double';\r\ns_correct = -26951229020045440;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 16 )\r\n\r\n%%\r\na = -130;\r\nb = -126;\r\ndt = 'single';\r\ns_correct = -50200704;\r\ns = summation(a, b, dt);\r\nassert( abs(s - s_correct) \u003c 16 )\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":3,"created_by":64439,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":5,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2018-02-06T03:56:08.000Z","updated_at":"2018-02-06T14:46:13.000Z","published_at":"2018-02-06T14:39:57.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIn this problem you must add up \\\"all of the numbers\\\" between two specified limits,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eb\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, in which\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e ≤\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eb\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e. However, the practical interpretation of \\\"all of the numbers\\\" will depend upon the specified\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/numeric-types.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003edata type\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003edt\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eMathematically speaking, if\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u0026lt;\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eb\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e then the required sum constitutes an\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003einfinite series\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e that does not converge (i.e. the required sum would be infinity). For example, if\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea=1\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eb=2\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e then we could capture\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003esome\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e of those numbers through the series lim n→∞ ⁿ∑ᵢ₌₁{1 + (1/i)} = lim n→∞ {n + ⁿ∑ᵢ₌₁(1/i)} ≈ lim n→∞ {n + γ + ln(n)}, using properties of the harmonic series in the last approximation.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eBut MATLAB cannot represent numbers with\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003einfinite\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e precision. In fact, the precision is determined by the specified\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/numeric-types.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003edata type\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e. For instance, if\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003edt = 'single'\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, then with\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea=1\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eb=2\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e the summation would comprise the series {(1) + (1+1×2⁻²³) + (1+2×2⁻²³) + (1+3×2⁻²³) + ... + (2−2×2⁻²³) + (2−1×2⁻²³) + (2)} = 12582913.5, which is finite.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eAnother example:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ % INPUT\\n a = 10\\n b = 12\\n dt = 'int16'\\n % OUTPUT\\n s = 33         %  = 10 + 11 +12]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSo please add up all the numbers between two limits (inclusive), subject to the precision indicated by the specified\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/numeric-types.html\\\"\u003e\u003cw:r\u003e\u003cw:t\u003edata type\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eNOTE\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e1\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e: Terminal values\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ea\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eb\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e are whole numbers in every case (albeit implicitly defined as of the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003edouble\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e data type); they can be positive or negative. However, values -1\u0026lt;x\u0026lt;+1 are never included in the summations.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eNOTE\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e2\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e: All data types specified in the input\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003edt\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e shall be\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/numeric-types.html\\\"\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003enumeric\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":44631,"title":"Make your own Test Suite (part 0)","description":"_Have no knowledge of \u003chttps://au.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html \"floating-point numbers\"\u003e?  Read the documentation, and/or try \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44690 Problem 44690\u003e first._\r\n\r\n——————————————————————————————————————————\r\n\r\nIn this task you need to imagine that you — _yes, YOU_ — have developed a problem on Cody for _me_ to solve, and now *you need to draft a naïve Test Suite* as the first step in developing a more robust Test Suite that would check whether _my_ submitted solutions meet _your_ requirements or not.  \r\n\r\nSo the tables are turned!  You are now in the role of Tester!  I am in the role of Player!  \r\n\r\nThe problem you've set me is to:\r\n\r\n* output the *sine* of an angle, when the angle is specified in degrees as a (scalar) \u003chttps://au.mathworks.com/help/matlab/ref/double.html |double|\u003e, with no restriction in the domain.\r\n\r\nYou provide me with the following example for the function defined as |s = SINE(a)|:\r\n\r\n % INPUT\r\n a = 45 % degrees\r\n % OUTPUT\r\n s = 1/sqrt(2)\r\n\r\nNow I have responded by submitting a large number of purported 'solutions', some of which are _reasonably accurate_, and others which are either too imprecise or else logically flawed.  \r\n\r\nYour final Test Suite (contained within _your_ function |testSuite|) will have to address several aspects arising in your problem specification.  However, for this 'first draft' you are creating a naïve Test Suite with only one requirement:  \r\n\r\n# Check that my submitted code reliably returns *sufficiently accurate* values for sine of many different angles.  Use the \u003chttps://au.mathworks.com/help/matlab/ref/assert.html |assert|\u003e function to generate \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44357 errors/exceptions\u003e if the values are not sufficiently accurate.  \r\n\r\nYou *can* use the functions |sind|, |sin|, _etc._ in this draft Test Suite, if you want — even though this would be bad practice in your final Test Suite! \r\n\r\nThus, the above specification is merely a _starting point_.  You will develop more robust Test Suites in:\r\n\r\n* \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44617 Problem 44617\u003e (part *1*)\r\n* \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44616 Problem 44616\u003e (part *2*)\r\n* \u003chttps://www.mathworks.com/matlabcentral/cody/problems/44521 Problem 44521\u003e (part *3*)","description_html":"\u003cp\u003e\u003ci\u003eHave no knowledge of \u003ca href = \"https://au.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html\"\u003e\"floating-point numbers\"\u003c/a\u003e?  Read the documentation, and/or try \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44690\"\u003eProblem 44690\u003c/a\u003e first.\u003c/i\u003e\u003c/p\u003e\u003cp\u003e——————————————————————————————————————————\u003c/p\u003e\u003cp\u003eIn this task you need to imagine that you — \u003ci\u003eyes, YOU\u003c/i\u003e — have developed a problem on Cody for \u003ci\u003eme\u003c/i\u003e to solve, and now \u003cb\u003eyou need to draft a naïve Test Suite\u003c/b\u003e as the first step in developing a more robust Test Suite that would check whether \u003ci\u003emy\u003c/i\u003e submitted solutions meet \u003ci\u003eyour\u003c/i\u003e requirements or not.\u003c/p\u003e\u003cp\u003eSo the tables are turned!  You are now in the role of Tester!  I am in the role of Player!\u003c/p\u003e\u003cp\u003eThe problem you've set me is to:\u003c/p\u003e\u003cul\u003e\u003cli\u003eoutput the \u003cb\u003esine\u003c/b\u003e of an angle, when the angle is specified in degrees as a (scalar) \u003ca href = \"https://au.mathworks.com/help/matlab/ref/double.html\"\u003e\u003ctt\u003edouble\u003c/tt\u003e\u003c/a\u003e, with no restriction in the domain.\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eYou provide me with the following example for the function defined as \u003ctt\u003es = SINE(a)\u003c/tt\u003e:\u003c/p\u003e\u003cpre\u003e % INPUT\r\n a = 45 % degrees\r\n % OUTPUT\r\n s = 1/sqrt(2)\u003c/pre\u003e\u003cp\u003eNow I have responded by submitting a large number of purported 'solutions', some of which are \u003ci\u003ereasonably accurate\u003c/i\u003e, and others which are either too imprecise or else logically flawed.\u003c/p\u003e\u003cp\u003eYour final Test Suite (contained within \u003ci\u003eyour\u003c/i\u003e function \u003ctt\u003etestSuite\u003c/tt\u003e) will have to address several aspects arising in your problem specification.  However, for this 'first draft' you are creating a naïve Test Suite with only one requirement:\u003c/p\u003e\u003col\u003e\u003cli\u003eCheck that my submitted code reliably returns \u003cb\u003esufficiently accurate\u003c/b\u003e values for sine of many different angles.  Use the \u003ca href = \"https://au.mathworks.com/help/matlab/ref/assert.html\"\u003e\u003ctt\u003eassert\u003c/tt\u003e\u003c/a\u003e function to generate \u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44357\"\u003eerrors/exceptions\u003c/a\u003e if the values are not sufficiently accurate.\u003c/li\u003e\u003c/ol\u003e\u003cp\u003eYou \u003cb\u003ecan\u003c/b\u003e use the functions \u003ctt\u003esind\u003c/tt\u003e, \u003ctt\u003esin\u003c/tt\u003e, \u003ci\u003eetc.\u003c/i\u003e in this draft Test Suite, if you want — even though this would be bad practice in your final Test Suite!\u003c/p\u003e\u003cp\u003eThus, the above specification is merely a \u003ci\u003estarting point\u003c/i\u003e.  You will develop more robust Test Suites in:\u003c/p\u003e\u003cul\u003e\u003cli\u003e\u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44617\"\u003eProblem 44617\u003c/a\u003e (part \u003cb\u003e1\u003c/b\u003e)\u003c/li\u003e\u003cli\u003e\u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44616\"\u003eProblem 44616\u003c/a\u003e (part \u003cb\u003e2\u003c/b\u003e)\u003c/li\u003e\u003cli\u003e\u003ca href = \"https://www.mathworks.com/matlabcentral/cody/problems/44521\"\u003eProblem 44521\u003c/a\u003e (part \u003cb\u003e3\u003c/b\u003e)\u003c/li\u003e\u003c/ul\u003e","function_template":"function dummy = testSuite()\r\n    \r\n    % Check outputs of submitted SINE function for various input values\r\n    % RATIONALE:  Computing SINE requires relatively simple code, \r\n    %             as the focus in the present task is on implementing a robust Test Suite.  \r\n    % MOTIVATION:  I could be submitting lazy code that only works for \r\n    %              a small number of angles, if that's all you test.\r\n    \r\n    %% Test 1\r\n    assert( isequal( SINE(45), 1/sqrt(2) )  )\r\n    \r\n    %% Test 2\r\n    assert( isequal( SINE(45), sine(45) )  )\r\n    \r\n    %% Test 3\r\n    assert( isequal( SINE(45), sin(45) )  )\r\n    \r\n    %% Test 4\r\n    assert( isequal( SINE(45), sind(45) )  )\r\n\r\n    %% Test 5\r\n    assert( isequal( SINE(45), sine(1/sqrt(2)) )  )\r\n    \r\n    %% Test 6\r\n    assert( isequal( SINE(45), sin(1/sqrt(2)) )  )\r\n    \r\n    %% Test 7\r\n    assert( isequal( SINE(45), sind(1/sqrt(2)) )  )\r\n    \r\n\r\nend\r\n\r\n%{\r\nNOTE:  \r\nThe text \"dummy = \" was added to this Function Template, \r\nbecause Cody was generating a spurious error, namely\r\n        Your problem cannot be published until you:\r\n        •Edit the function name in the test suite to match the function name in the function template\r\nHowever, in the Reference Solution it was confirmed to be unnecessary.  \r\n%}","test_suite":"%% Placeholder\r\n%assessFunctionAbsence('sind', 'FileName','testSuite.m')\r\n\r\n\r\n%% Exactly right\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = sind(angle);\\n');\r\nfclose(fileID);\r\nstatus_correct = 'pass';\r\nstatus = 'pass';\r\n                    testSuite()\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% Sufficiently close (I)\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = sind(angle + eps(angle));\\n');\r\nfclose(fileID);\r\nstatus_correct = 'pass';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% Sufficiently close (II)\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = sin(angle * pi / 180);\\n');\r\nfclose(fileID);\r\nstatus_correct = 'pass';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% Sufficiently close (III)\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = 1 ./ cscd(angle);\\n');\r\nfclose(fileID);\r\nstatus_correct = 'pass';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% Insufficiently close (I)\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = sin(angle * 3.14 / 180);\\n');\r\nfclose(fileID);\r\nstatus_correct = 'fail';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% Insufficiently close (II)\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = sin(angle * (22/7) / 180);\\n');\r\nfclose(fileID);\r\nstatus_correct = 'fail';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% Sufficiently close (III)\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = sind(angle + 10000*eps(angle));\\n');\r\nfclose(fileID);\r\nstatus_correct = 'fail';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% Completely wrong\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = cosd(angle);\\n');\r\nfclose(fileID);\r\nstatus_correct = 'fail';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% Partly wrong (I)\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = sind(angle*sign(angle));\\n');\r\nfclose(fileID);\r\nstatus_correct = 'fail';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% Partly wrong (II)\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = -sind(angle*sign(angle));\\n');\r\nfclose(fileID);\r\nstatus_correct = 'fail';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% Partly wrong (III)\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = sind(angle)*sign(sind(angle));\\n');\r\nfclose(fileID);\r\nstatus_correct = 'fail';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% 'Fixed' angles\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   s = sind(fix(angle));\\n');\r\nfclose(fileID);\r\nstatus_correct = 'fail';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n\r\n\r\n%% 'Unfixed' angles\r\nfileID = fopen('SINE.m','w');\r\nfprintf(fileID,'function s = SINE(angle)\\n');\r\nfprintf(fileID,'   inc=0;\\n');\r\nfprintf(fileID,'   if mod(angle,1)==0, inc=1; end;\\n');\r\nfprintf(fileID,'   s = sind(angle + inc);\\n');\r\nfclose(fileID);\r\nstatus_correct = 'fail';\r\nstatus = 'pass';\r\ntry\r\n    testSuite()\r\ncatch e\r\n    status = 'fail'\r\nend\r\nassert( isequal(status, status_correct) , 'Wrong status' )\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":6,"created_by":64439,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":5,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2018-05-05T12:36:47.000Z","updated_at":"2018-06-17T02:29:04.000Z","published_at":"2018-05-05T13:35:28.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eHave no knowledge of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html\\\"\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"floating-point numbers\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e? Read the documentation, and/or try\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44690\\\"\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eProblem 44690\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e first.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e——————————————————————————————————————————\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eIn this task you need to imagine that you —\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eyes, YOU\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e — have developed a problem on Cody for\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eme\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e to solve, and now\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eyou need to draft a naïve Test Suite\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e as the first step in developing a more robust Test Suite that would check whether\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003emy\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e submitted solutions meet\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eyour\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e requirements or not.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eSo the tables are turned! You are now in the role of Tester! I am in the role of Player!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe problem you've set me is to:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eoutput the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003esine\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e of an angle, when the angle is specified in degrees as a (scalar)\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/double.html\\\"\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003edouble\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e, with no restriction in the domain.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou provide me with the following example for the function defined as\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003es = SINE(a)\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ % INPUT\\n a = 45 % degrees\\n % OUTPUT\\n s = 1/sqrt(2)]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eNow I have responded by submitting a large number of purported 'solutions', some of which are\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ereasonably accurate\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, and others which are either too imprecise or else logically flawed.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYour final Test Suite (contained within\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eyour\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e function\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003etestSuite\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e) will have to address several aspects arising in your problem specification. However, for this 'first draft' you are creating a naïve Test Suite with only one requirement:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"2\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eCheck that my submitted code reliably returns\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003esufficiently accurate\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e values for sine of many different angles. Use the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://au.mathworks.com/help/matlab/ref/assert.html\\\"\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eassert\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e function to generate\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44357\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eerrors/exceptions\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e if the values are not sufficiently accurate.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYou\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ecan\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e use the functions\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003esind\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003esin\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eetc.\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e in this draft Test Suite, if you want — even though this would be bad practice in your final Test Suite!\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThus, the above specification is merely a\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003estarting point\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e. You will develop more robust Test Suites in:\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44617\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 44617\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (part\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e1\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44616\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 44616\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (part\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e2\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"ListParagraph\\\"/\u003e\u003cw:numPr\u003e\u003cw:numId w:val=\\\"1\\\"/\u003e\u003c/w:numPr\u003e\u003c/w:pPr\u003e\u003cw:hyperlink w:docLocation=\\\"https://www.mathworks.com/matlabcentral/cody/problems/44521\\\"\u003e\u003cw:r\u003e\u003cw:t\u003eProblem 44521\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:hyperlink\u003e\u003cw:r\u003e\u003cw:t\u003e (part\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e3\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e)\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"},{"id":44695,"title":"What score did they give?","description":"Your task in this problem is to figure out the most recent score, |S|, submitted.  \r\n\r\n\u003c\u003chttps://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Star_rating_4.5_of_5.png/799px-Star_rating_4.5_of_5.png\u003e\u003e\r\n\r\nMany websites allow users to rate things like restaurants, books, films, and even computer programs.  Often these are rated _from one to five stars_, and the display shows the _average_ rating after _rounding to one decimal place_, |R|, and the number of users who have rated the item/place/thing, |N|.  \r\n\r\nThis morning you checked the website and noted |R| and |N|.  This evening you check again:  |N| has increased by one, and the rounded version of the updated overall rating is now displayed, |R_new|.  You then deduce what possible scores, |S|, were submitted by the additional person during the day.  \r\n\r\nEXAMPLE\r\n\r\n % Inputs\r\n N = 11\r\n R = 2.5\r\n R_new = 2.6\r\n % Output\r\n S = [3 4]\r\n\r\nExplanation:  Given |N|=11, the unrounded version of |R| must have been either 2 ⁵/₁₁ or 2 ⁶/₁₁. Increasing |N| by 1 with an additional score of either 4 stars or 3 stars (respectively) would mean that the unrounded version of |R_new| would become 2 ⁷/₁₂, consistent with the displayed value.  \r\n\r\n|S| shall be a row vector, or scalar, or empty.  If |S| is a row vector, scores shall be listed in ascending order, without repetition.  ","description_html":"\u003cp\u003eYour task in this problem is to figure out the most recent score, \u003ctt\u003eS\u003c/tt\u003e, submitted.\u003c/p\u003e\u003cimg src = \"https://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Star_rating_4.5_of_5.png/799px-Star_rating_4.5_of_5.png\"\u003e\u003cp\u003eMany websites allow users to rate things like restaurants, books, films, and even computer programs.  Often these are rated \u003ci\u003efrom one to five stars\u003c/i\u003e, and the display shows the \u003ci\u003eaverage\u003c/i\u003e rating after \u003ci\u003erounding to one decimal place\u003c/i\u003e, \u003ctt\u003eR\u003c/tt\u003e, and the number of users who have rated the item/place/thing, \u003ctt\u003eN\u003c/tt\u003e.\u003c/p\u003e\u003cp\u003eThis morning you checked the website and noted \u003ctt\u003eR\u003c/tt\u003e and \u003ctt\u003eN\u003c/tt\u003e.  This evening you check again:  \u003ctt\u003eN\u003c/tt\u003e has increased by one, and the rounded version of the updated overall rating is now displayed, \u003ctt\u003eR_new\u003c/tt\u003e.  You then deduce what possible scores, \u003ctt\u003eS\u003c/tt\u003e, were submitted by the additional person during the day.\u003c/p\u003e\u003cp\u003eEXAMPLE\u003c/p\u003e\u003cpre\u003e % Inputs\r\n N = 11\r\n R = 2.5\r\n R_new = 2.6\r\n % Output\r\n S = [3 4]\u003c/pre\u003e\u003cp\u003eExplanation:  Given \u003ctt\u003eN\u003c/tt\u003e=11, the unrounded version of \u003ctt\u003eR\u003c/tt\u003e must have been either 2 ⁵/₁₁ or 2 ⁶/₁₁. Increasing \u003ctt\u003eN\u003c/tt\u003e by 1 with an additional score of either 4 stars or 3 stars (respectively) would mean that the unrounded version of \u003ctt\u003eR_new\u003c/tt\u003e would become 2 ⁷/₁₂, consistent with the displayed value.\u003c/p\u003e\u003cp\u003e\u003ctt\u003eS\u003c/tt\u003e shall be a row vector, or scalar, or empty.  If \u003ctt\u003eS\u003c/tt\u003e is a row vector, scores shall be listed in ascending order, without repetition.\u003c/p\u003e","function_template":"function S = latestScore(N, R, R_new)\r\n    \r\nend","test_suite":"%% No silly stuff\r\n% This Test Suite can be updated if inappropriate 'hacks' are discovered \r\n% in any submitted solutions, so your submission's status may therefore change over time.  \r\nassessFunctionAbsence({'regexp', 'regexpi', 'str2num'}, 'FileName','latestScore.m')\r\n\r\nRE = regexp(fileread('latestScore.m'), '\\w+', 'match');\r\ntabooWords = {'ans'};\r\ntestResult = cellfun( @(z) ismember(z, tabooWords), RE );\r\nmsg = ['Please do not do that in your code!' char([10 13]) ...\r\n    'Found: ' strjoin(RE(testResult)) '.' char([10 13]) ...\r\n    'Banned word.' char([10 13])];\r\nassert(~any( testResult ), msg)\r\n\r\n\r\n%% N = 11\r\nN = 11;\r\nR = 2.5;\r\nR_new = 2.2;\r\nS = latestScore(N, R, R_new);\r\nassert( isempty(S) )\r\n\r\n%%\r\nN = 11;\r\nR = 2.5;\r\nR_new = 2.3;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 1;\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 11;\r\nR = 2.5;\r\nR_new = 2.4;\r\nS = latestScore(N, R, R_new);\r\nS_correct = [1 2];\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 11;\r\nR = 2.5;\r\nR_new = 2.5;\r\nS = latestScore(N, R, R_new);\r\nS_correct = [2 3];\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 11;\r\nR = 2.5;\r\nR_new = 2.6;\r\nS = latestScore(N, R, R_new);\r\nS_correct = [3 4];\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 11;\r\nR = 2.5;\r\nR_new = 2.7;\r\nS = latestScore(N, R, R_new);\r\nS_correct = [4 5];\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 11;\r\nR = 2.5;\r\nR_new = 2.8;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 5;\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 11;\r\nR = 2.5;\r\nR_new = 2.9;\r\nS = latestScore(N, R, R_new);\r\nassert( isempty(S) )\r\n\r\n\r\n%% N = 12\r\nN = 12;\r\nR = 2.3;\r\nR_new = 2.2;\r\nS = latestScore(N, R, R_new);\r\nS_correct = [1 2];\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 12;\r\nR = 2.3;\r\nR_new = 2.5;\r\nS = latestScore(N, R, R_new);\r\nS_correct = [4 5];\r\nassert(isequal(S, S_correct))\r\n\r\n\r\n\r\n%% N = 17\r\nN = 17;\r\nR = 1.6;\r\nR_new = 1.7;\r\nS = latestScore(N, R, R_new);\r\nS_correct = [2 3 4];\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 17;\r\nR = 2.6;\r\nR_new = 2.5;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 1;\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 17;\r\nR = 2.6;\r\nR_new = 2.7;\r\nS = latestScore(N, R, R_new);\r\nS_correct = [3 4 5];\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 17;\r\nR = 2.6;\r\nR_new = 2.8;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 5;\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 17;\r\nR = 3.4;\r\nR_new = 3.2;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 1;\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 17;\r\nR = 3.4;\r\nR_new = 3.3;\r\nS = latestScore(N, R, R_new);\r\nS_correct = [1 2 3];\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 17;\r\nR = 3.4;\r\nR_new = 3.5;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 5;\r\nassert(isequal(S, S_correct))\r\n\r\n\r\n%% N = 48\r\nN = 48;\r\nR = 3.7;\r\nR_new = 3.5;\r\nS = latestScore(N, R, R_new);\r\nassert( isempty(S) )\r\n\r\n%%\r\nN = 48;\r\nR = 3.7;\r\nR_new = 3.6;\r\nS = latestScore(N, R, R_new);\r\nS_correct = [1 2];\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 48;\r\nR = 3.7;\r\nR_new = 3.7;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 1:5;\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 48;\r\nR = 3.7;\r\nR_new = 3.8;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 5;\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 48;\r\nR = 4.4;\r\nR_new = 4.2;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 1:4;\r\nassert( isempty(S) )\r\n\r\n%%\r\nN = 48;\r\nR = 4.4;\r\nR_new = 4.3;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 1:4;\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 48;\r\nR = 4.4;\r\nR_new = 4.4;\r\nS = latestScore(N, R, R_new);\r\nS_correct = 1:5;\r\nassert(isequal(S, S_correct))\r\n\r\n%%\r\nN = 48;\r\nR = 4.4;\r\nR_new = 4.5;\r\nS = latestScore(N, R, R_new);\r\nassert( isempty(S) )\r\n","published":true,"deleted":false,"likes_count":1,"comments_count":2,"created_by":64439,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":9,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2018-07-09T03:13:05.000Z","updated_at":"2025-09-14T14:31:48.000Z","published_at":"2018-07-09T04:06:39.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/image\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/media/image1.png\"}],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYour task in this problem is to figure out the most recent score,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eS\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, submitted.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:customXml w:element=\\\"image\\\"\u003e\u003cw:customXmlPr\u003e\u003cw:attr w:name=\\\"height\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"width\\\" w:val=\\\"-1\\\"/\u003e\u003cw:attr w:name=\\\"relationshipId\\\" w:val=\\\"rId1\\\"/\u003e\u003c/w:customXmlPr\u003e\u003c/w:customXml\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eMany websites allow users to rate things like restaurants, books, films, and even computer programs. Often these are rated\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003efrom one to five stars\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, and the display shows the\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eaverage\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e rating after\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003erounding to one decimal place\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eR\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, and the number of users who have rated the item/place/thing,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eN\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThis morning you checked the website and noted\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eR\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e and\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eN\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e. This evening you check again: \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eN\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e has increased by one, and the rounded version of the updated overall rating is now displayed,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eR_new\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e. You then deduce what possible scores,\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eS\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e, were submitted by the additional person during the day.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eEXAMPLE\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[ % Inputs\\n N = 11\\n R = 2.5\\n R_new = 2.6\\n % Output\\n S = [3 4]]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eExplanation: Given\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eN\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e=11, the unrounded version of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eR\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e must have been either 2 ⁵/₁₁ or 2 ⁶/₁₁. Increasing\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eN\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e by 1 with an additional score of either 4 stars or 3 stars (respectively) would mean that the unrounded version of\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eR_new\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e would become 2 ⁷/₁₂, consistent with the displayed value.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eS\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e shall be a row vector, or scalar, or empty. If\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eS\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e is a row vector, scores shall be listed in ascending order, without repetition.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"},{\"partUri\":\"/media/image1.png\",\"contentType\":\"image/png\",\"content\":\"data:image/png;base64,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\"}]}"},{"id":44545,"title":"\"Percentages may not total 100 due to rounding\"","description":"*Percentages* are commonly *rounded* when presented in tables.  As a result, the sum of the individual numbers does not always add up to 100%.  A warning is therefore sometimes appended to such tables, along the lines: _\"Percentages may not total 100 due to rounding\"_.\r\n\r\nEXAMPLE 1:\r\nA survey of eleven people for their opinion on a new policy found five to be in favour, five opposed, and one undecided/neutral.  Percentage-wise this becomes\r\n\r\n  In favour:          45% (5 of 11)\r\n  Undecided/neutral:   9% (1 of 11)  \r\n  Opposed:            45% (5 of 11)  \r\n\r\nThe total of these is 99%, rather than the expected 100%.  Despite this conflict, in this example *all of the individual numbers have been correctly entered*.  \r\n\r\nEXAMPLE 2:\r\nIn the same report, a survey of a further ten people on a different policy found four to be in favour, four opposed, and two undecided/neutral.  Suppose the data were presented in the following table\r\n\r\n  In favour:          45%\r\n  Undecided/neutral:  20%\r\n  Opposed:            45%\r\n\r\nGiven the background information, we would quickly recognise this as inconsistent, with a spurious total of 110%, rather than the expected 100%.  In fact, we would probably guess that a copy-and-paste mistake had occurred.  However, it is important to realise that even if we looked at this table alone, in isolation, without any background knowledge of the survey size or the true number of responses in any category, just by knowing that there are only three categories we can firmly conclude that in this example *one or more of the individual numbers must have been entered incorrectly*.  \r\n\r\nYOUR JOB:  \r\nGiven a list (vector) of integer percentages, determine whether among the individual values at least one of them _must_ have been incorrectly entered (return |true|), as in Example 2, or whether there might not be any incorrect entries (return |false|), as in Example 1.","description_html":"\u003cp\u003e\u003cb\u003ePercentages\u003c/b\u003e are commonly \u003cb\u003erounded\u003c/b\u003e when presented in tables.  As a result, the sum of the individual numbers does not always add up to 100%.  A warning is therefore sometimes appended to such tables, along the lines: \u003ci\u003e\"Percentages may not total 100 due to rounding\"\u003c/i\u003e.\u003c/p\u003e\u003cp\u003eEXAMPLE 1:\r\nA survey of eleven people for their opinion on a new policy found five to be in favour, five opposed, and one undecided/neutral.  Percentage-wise this becomes\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eIn favour:          45% (5 of 11)\r\nUndecided/neutral:   9% (1 of 11)  \r\nOpposed:            45% (5 of 11)  \r\n\u003c/pre\u003e\u003cp\u003eThe total of these is 99%, rather than the expected 100%.  Despite this conflict, in this example \u003cb\u003eall of the individual numbers have been correctly entered\u003c/b\u003e.\u003c/p\u003e\u003cp\u003eEXAMPLE 2:\r\nIn the same report, a survey of a further ten people on a different policy found four to be in favour, four opposed, and two undecided/neutral.  Suppose the data were presented in the following table\u003c/p\u003e\u003cpre class=\"language-matlab\"\u003eIn favour:          45%\r\nUndecided/neutral:  20%\r\nOpposed:            45%\r\n\u003c/pre\u003e\u003cp\u003eGiven the background information, we would quickly recognise this as inconsistent, with a spurious total of 110%, rather than the expected 100%.  In fact, we would probably guess that a copy-and-paste mistake had occurred.  However, it is important to realise that even if we looked at this table alone, in isolation, without any background knowledge of the survey size or the true number of responses in any category, just by knowing that there are only three categories we can firmly conclude that in this example \u003cb\u003eone or more of the individual numbers must have been entered incorrectly\u003c/b\u003e.\u003c/p\u003e\u003cp\u003eYOUR JOB:  \r\nGiven a list (vector) of integer percentages, determine whether among the individual values at least one of them \u003ci\u003emust\u003c/i\u003e have been incorrectly entered (return \u003ctt\u003etrue\u003c/tt\u003e), as in Example 2, or whether there might not be any incorrect entries (return \u003ctt\u003efalse\u003c/tt\u003e), as in Example 1.\u003c/p\u003e","function_template":"% \"May not sum to total due to rounding: the probability of rounding errors\"\r\n% Henry Bottomley, 03 June 2008\r\n% http://www.se16.info/hgb/rounding.pdf\r\n\r\n% \"How to make rounded percentages add up to 100%\"\r\n% https://stackoverflow.com/questions/13483430/how-to-make-rounded-percentages-add-up-to-100\r\n% cf. https://stackoverflow.com/questions/5227215/how-to-deal-with-the-sum-of-rounded-percentage-not-being-100\r\nfunction containsMistake = checkForMistake(z)\r\n    containsMistake = true * + false,\r\nend","test_suite":"%% Basics\r\nassessFunctionAbsence({'regexp', 'regexpi'}, 'FileName','checkForMistake.m')\r\n\r\n%% Example 1 (Row vector)\r\nxVec = round( 100*[5 1 5]/11 );\r\ncontainsMistake = false;\r\nassert( isequal(checkForMistake(xVec), containsMistake) )\r\n\r\n%% Example 1 (Column vector)\r\nxVec = round( 100*[5 1 5]/11 )';\r\ncontainsMistake = false;\r\nassert( isequal(checkForMistake(xVec), containsMistake) )\r\n\r\n%% Example 2 (Row vector)\r\nxVec = [42 20 45];\r\ncontainsMistake = true;\r\nassert( isequal(checkForMistake(xVec), containsMistake) )\r\n\r\n%% One percentage, over and under\r\nxVec = [100];\r\ncontainsMistake = false;\r\nassert( isequal(checkForMistake(xVec), containsMistake) , 'Failed test a')\r\nxVec = round([100.5]);\r\ncontainsMistake = true;\r\nassert( isequal(checkForMistake(xVec), containsMistake) , 'Failed test b')\r\nxVec = round([99.49]);\r\ncontainsMistake = true;\r\nassert( isequal(checkForMistake(xVec), containsMistake) , 'Failed test c')\r\n\r\n%% Two percentages, over and under\r\nxVec = [50 50];\r\ncontainsMistake = false;\r\nassert( isequal(checkForMistake(xVec), containsMistake) , 'Failed test a')\r\nxVec = round([49.5 50.5]);\r\ncontainsMistake = false;\r\nassert( isequal(checkForMistake(xVec), containsMistake) , 'Failed test b')\r\nxVec = round([50.5 50.5]);\r\ncontainsMistake = true;\r\nassert( isequal(checkForMistake(xVec), containsMistake) , 'Failed test c')\r\nxVec = round([49.49 50.49]);\r\ncontainsMistake = true;\r\nassert( isequal(checkForMistake(xVec), containsMistake) , 'Failed test d')\r\n\r\n%% Equal percentages\r\nfor j = [2:250 1000:1000:10000]\r\n    xVec = round( repelem(100/j, j) );\r\n    containsMistake = false;\r\n    assert( isequal(checkForMistake(xVec), containsMistake) )\r\nend;\r\n\r\n%% Geometric series (from Bottomley, §5)\r\nfor j = 10:30\r\n    xVec = round( 10 * (9/10).^[0:j] );\r\n    containsMistake = j \u003c 21;\r\n    assert( isequal(checkForMistake(xVec), containsMistake) )\r\nend;\r\n\r\n%% Geometric series (from Bottomley, §5), permuted\r\nfor j = 2:40\r\n    xVec = round( 10 * (9/10).^[0:j] );\r\n    xVec = xVec( randperm(j+1) );\r\n    containsMistake = j \u003c 21;\r\n    assert( isequal(checkForMistake(xVec), containsMistake) )\r\nend;\r\n\r\n%% Other geometric series (permuted) I\r\nfor j = 2:100\r\n    xVec = round( (99/100).^[0:j] );\r\n    xVec = xVec( randperm(j+1) );\r\n    containsMistake = j \u003c 66;\r\n    assert( isequal(checkForMistake(xVec), containsMistake) )\r\nend;\r\n\r\n%% Other geometric series (permuted) II\r\nfor j = 2:30\r\n    xVec = round( 20 * (4/5).^[0:j] );\r\n    xVec = xVec( randperm(j+1) );\r\n    containsMistake = j \u003c 12;\r\n    assert( isequal(checkForMistake(xVec), containsMistake) )\r\nend;\r\n\r\n%% Other geometric series (permuted) III\r\nfor j = 2:20\r\n    xVec = round( 25 * (3/4).^[0:j] );\r\n    xVec = xVec( randperm(j+1) );\r\n    containsMistake = j \u003c 10;\r\n    assert( isequal(checkForMistake(xVec), containsMistake) )\r\nend;\r\n\r\n%% Other geometric series (permuted) IV\r\nfor j = 2:20\r\n    xVec = round( 50 * (1/2).^[0:j] );\r\n    xVec = xVec( randperm(j+1) );\r\n    containsMistake = j \u003c 5;\r\n    assert( isequal(checkForMistake(xVec), containsMistake) )\r\nend;\r\n\r\n%% Systematic overestimation\r\nfor j = 2:100\r\n    num = randi(round(100/j)+1) - 1;\r\n    xRaw = repelem(num+0.5, j);   % cf. https://oletus.github.io/float16-simulator.js/\r\n    sm = sum(xRaw);\r\n    xRaw = [xRaw max(100-sm, 0)];\r\n    if sm \u003e 100.5,                % Not sm\u003e100, because need to account for extra zero added.\r\n        containsMistake = true;\r\n    else\r\n        containsMistake = false;\r\n    end;\r\n    xVec = round( xRaw );\r\n    xVec = xVec( randperm(j+1) );\r\n    assert( isequal(checkForMistake(xVec), containsMistake) , ['Failed with xRaw = ' num2str(xRaw)] )\r\nend;\r\n\r\n%% Systematic underestimation\r\nfor j = 2:100\r\n    num = randi(round(100/j)+1) - 1;\r\n    xRaw = repelem(num+0.499755859375, j);   % cf. https://oletus.github.io/float16-simulator.js/ \u0026 https://au.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html\r\n    cs = cumsum(xRaw);\r\n    if cs(end) \u003e 100,\r\n        xRaw( cs \u003e 100 ) = [];\r\n        containsMistake = true;\r\n    else\r\n        xRaw = [xRaw (100-cs(end))];\r\n        containsMistake = false;\r\n    end;\r\n    xVec = round( xRaw );\r\n    assert( isequal(checkForMistake(xVec), containsMistake) , ['Failed with xRaw = ' num2str(xRaw)] )\r\nend;","published":true,"deleted":false,"likes_count":0,"comments_count":0,"created_by":64439,"edited_by":null,"edited_at":null,"deleted_by":null,"deleted_at":null,"solvers_count":3,"test_suite_updated_at":null,"rescore_all_solutions":false,"group_id":1,"created_at":"2018-03-23T08:02:20.000Z","updated_at":"2018-03-24T13:53:40.000Z","published_at":"2018-03-24T13:53:40.000Z","restored_at":null,"restored_by":null,"spam":false,"simulink":false,"admin_reviewed":false,"description_opc":"{\"relationships\":[{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/document\",\"targetMode\":\"\",\"relationshipId\":\"rId1\",\"target\":\"/matlab/document.xml\"},{\"relationshipType\":\"http://schemas.mathworks.com/matlab/code/2013/relationships/output\",\"targetMode\":\"\",\"relationshipId\":\"rId2\",\"target\":\"/matlab/output.xml\"}],\"parts\":[{\"partUri\":\"/matlab/document.xml\",\"relationship\":[],\"contentType\":\"application/vnd.mathworks.matlab.code.document+xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\u003e\\n\u003cw:document xmlns:w=\\\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\\\"\u003e\u003cw:body\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003ePercentages\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e are commonly\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003erounded\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e when presented in tables. As a result, the sum of the individual numbers does not always add up to 100%. A warning is therefore sometimes appended to such tables, along the lines:\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003e\\\"Percentages may not total 100 due to rounding\\\"\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eEXAMPLE 1: A survey of eleven people for their opinion on a new policy found five to be in favour, five opposed, and one undecided/neutral. Percentage-wise this becomes\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[In favour:          45% (5 of 11)\\nUndecided/neutral:   9% (1 of 11)  \\nOpposed:            45% (5 of 11)]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eThe total of these is 99%, rather than the expected 100%. Despite this conflict, in this example\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eall of the individual numbers have been correctly entered\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eEXAMPLE 2: In the same report, a survey of a further ten people on a different policy found four to be in favour, four opposed, and two undecided/neutral. Suppose the data were presented in the following table\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"code\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003e\u003c![CDATA[In favour:          45%\\nUndecided/neutral:  20%\\nOpposed:            45%]]\u003e\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eGiven the background information, we would quickly recognise this as inconsistent, with a spurious total of 110%, rather than the expected 100%. In fact, we would probably guess that a copy-and-paste mistake had occurred. However, it is important to realise that even if we looked at this table alone, in isolation, without any background knowledge of the survey size or the true number of responses in any category, just by knowing that there are only three categories we can firmly conclude that in this example\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:b/\u003e\u003c/w:rPr\u003e\u003cw:t\u003eone or more of the individual numbers must have been entered incorrectly\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003cw:p\u003e\u003cw:pPr\u003e\u003cw:pStyle w:val=\\\"text\\\"/\u003e\u003c/w:pPr\u003e\u003cw:r\u003e\u003cw:t\u003eYOUR JOB: Given a list (vector) of integer percentages, determine whether among the individual values at least one of them\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:i/\u003e\u003c/w:rPr\u003e\u003cw:t\u003emust\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e have been incorrectly entered (return\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003etrue\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e), as in Example 2, or whether there might not be any incorrect entries (return\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e \u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:rPr\u003e\u003cw:rFonts w:cs=\\\"monospace\\\"/\u003e\u003c/w:rPr\u003e\u003cw:t\u003efalse\u003c/w:t\u003e\u003c/w:r\u003e\u003cw:r\u003e\u003cw:t\u003e), as in Example 1.\u003c/w:t\u003e\u003c/w:r\u003e\u003c/w:p\u003e\u003c/w:body\u003e\u003c/w:document\u003e\"},{\"partUri\":\"/matlab/output.xml\",\"contentType\":\"text/xml\",\"content\":\"\u003c?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\" ?\u003e\u003cembeddedOutputs\u003e\u003cmetaData\u003e\u003cevaluationState\u003emanual\u003c/evaluationState\u003e\u003clayoutState\u003ecode\u003c/layoutState\u003e\u003coutputStatus\u003eready\u003c/outputStatus\u003e\u003c/metaData\u003e\u003coutputArray type=\\\"array\\\"/\u003e\u003cregionArray type=\\\"array\\\"/\u003e\u003c/embeddedOutputs\u003e\"}]}"}],"term":"tag:\"finite precision\"","current_player_id":null,"fields":[{"name":"page","type":"integer","callback":null,"default":1,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"per_page","type":"integer","callback":null,"default":50,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"sort","type":"string","callback":null,"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":null,"prepend":true},{"name":"body","type":"text","callback":null,"default":"*:*","directive":null,"facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":false},{"name":"group","type":"string","callback":null,"default":null,"directive":"group","facet":true,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"difficulty_rating_bin","type":"string","callback":null,"default":null,"directive":"difficulty_rating_bin","facet":true,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"id","type":"integer","callback":null,"default":null,"directive":"id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"tag","type":"string","callback":null,"default":null,"directive":"tag","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"product","type":"string","callback":null,"default":null,"directive":"product","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"created_at","type":"timeframe","callback":{},"default":null,"directive":"created_at","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"profile_id","type":"integer","callback":null,"default":null,"directive":"author_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"created_by","type":"string","callback":null,"default":null,"directive":"author","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"player_id","type":"integer","callback":null,"default":null,"directive":"solver_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"player","type":"string","callback":null,"default":null,"directive":"solver","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"solvers_count","type":"integer","callback":null,"default":null,"directive":"solvers_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"comments_count","type":"integer","callback":null,"default":null,"directive":"comments_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"likes_count","type":"integer","callback":null,"default":null,"directive":"likes_count","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"leader_id","type":"integer","callback":null,"default":null,"directive":"leader_id","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true},{"name":"leading_solution","type":"integer","callback":null,"default":null,"directive":"leading_solution","facet":null,"facet_method":"and","operator":null,"param":"term","static":null,"prepend":true}],"filters":[{"name":"asset_type","type":"string","callback":null,"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":null,"static":"\"cody:problem\"","prepend":true},{"name":"profile_id","type":"integer","callback":{},"default":null,"directive":null,"facet":null,"facet_method":"and","operator":null,"param":"author_id","static":null,"prepend":true}],"query":{"params":{"per_page":50,"term":"tag:\"finite precision\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"finite precision\"","","\"","finite precision","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f4f477a5790\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f4f477a5650\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f4f477a49d0\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f4f477a5b50\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f4f477a5ab0\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f4f477a5a10\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f4f477a5970\u003e":"tag:\"finite precision\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f4f477a5970\u003e":"tag:\"finite precision\""},"queried_facets":{}},"query_backend":{"connection":{"configuration":{"index_url":"http://index-op-v2/solr/","query_url":"http://search-op-v2/solr/","direct_access_index_urls":["http://index-op-v2/solr/"],"direct_access_query_urls":["http://search-op-v2/solr/"],"timeout":10,"vhost":"search","exchange":"search.topic","heartbeat":30,"pre_index_mode":false,"host":"rabbitmq-eks","port":5672,"username":"search","password":"J3bGPZzQ7asjJcCk","virtual_host":"search","indexer":"amqp","http_logging":"true","core":"cody"},"query_connection":{"uri":"http://search-op-v2/solr/cody/","proxy":null,"connection":{"parallel_manager":null,"headers":{"User-Agent":"Faraday v1.0.1"},"params":{},"options":{"params_encoder":"Faraday::FlatParamsEncoder","proxy":null,"bind":null,"timeout":null,"open_timeout":null,"read_timeout":null,"write_timeout":null,"boundary":null,"oauth":null,"context":null,"on_data":null},"ssl":{"verify":true,"ca_file":null,"ca_path":null,"verify_mode":null,"cert_store":null,"client_cert":null,"client_key":null,"certificate":null,"private_key":null,"verify_depth":null,"version":null,"min_version":null,"max_version":null},"default_parallel_manager":null,"builder":{"adapter":{"name":"Faraday::Adapter::NetHttp","args":[],"block":null},"handlers":[{"name":"Faraday::Response::RaiseError","args":[],"block":null}],"app":{"app":{"ssl_cert_store":{"verify_callback":null,"error":null,"error_string":null,"chain":null,"time":null},"app":{},"connection_options":{},"config_block":null}}},"url_prefix":"http://search-op-v2/solr/cody/","manual_proxy":false,"proxy":null},"update_format":"RSolr::JSON::Generator","update_path":"update","options":{"url":"http://search-op-v2/solr/cody"}}},"query":{"params":{"per_page":50,"term":"tag:\"finite precision\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"finite precision\"","","\"","finite precision","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f4f477a5790\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f4f477a5650\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f4f477a49d0\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f4f477a5b50\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f4f477a5ab0\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f4f477a5a10\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f4f477a5970\u003e":"tag:\"finite precision\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f4f477a5970\u003e":"tag:\"finite precision\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"id":44690,"difficulty_rating":"easy"},{"id":44691,"difficulty_rating":"easy-medium"},{"id":44513,"difficulty_rating":"medium"},{"id":44631,"difficulty_rating":"medium"},{"id":44695,"difficulty_rating":"medium"},{"id":44545,"difficulty_rating":"unrated"}]}}