{"group":{"id":1,"name":"Community","lockable":false,"created_at":"2012-01-18T18:02:15.000Z","updated_at":"2026-04-26T00:14:02.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":"2026-04-26T00: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\"}]}"}],"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\"}]}"}],"term":"tag:\"floating point numbers\"","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:\"floating point numbers\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"floating point numbers\"","","\"","floating point numbers","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f0da34e3218\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f0da34e3178\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f0da34e28b8\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f0da34e3498\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f0da34e33f8\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f0da34e3358\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f0da34e32b8\u003e":"tag:\"floating point numbers\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f0da34e32b8\u003e":"tag:\"floating point numbers\""},"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":"cody-search","password":"78X075ddcV44","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:\"floating point numbers\"","current_player":null,"sort":"map(difficulty_value,0,0,999) asc"},"parser":"MathWorks::Search::Solr::QueryParser","directives":{"term":{"directives":{"tag":[["tag:\"floating point numbers\"","","\"","floating point numbers","\""]]}}},"facets":{"#\u003cMathWorks::Search::Field:0x00007f0da34e3218\u003e":null,"#\u003cMathWorks::Search::Field:0x00007f0da34e3178\u003e":null},"filters":{"#\u003cMathWorks::Search::Field:0x00007f0da34e28b8\u003e":"\"cody:problem\""},"fields":{"#\u003cMathWorks::Search::Field:0x00007f0da34e3498\u003e":1,"#\u003cMathWorks::Search::Field:0x00007f0da34e33f8\u003e":50,"#\u003cMathWorks::Search::Field:0x00007f0da34e3358\u003e":"map(difficulty_value,0,0,999) asc","#\u003cMathWorks::Search::Field:0x00007f0da34e32b8\u003e":"tag:\"floating point numbers\""},"user_query":{"#\u003cMathWorks::Search::Field:0x00007f0da34e32b8\u003e":"tag:\"floating point numbers\""},"queried_facets":{}},"options":{"fields":["id","difficulty_rating"]},"join":" "},"results":[{"id":44690,"difficulty_rating":"easy"}]}}