Inexact numbers as keys in Association?
$begingroup$
Can someone explain me how Mathematica's Associations behave with inexact numbers as keys:
<| 0.22499999999999964` -> a |> [0.22499999999999965`]
and
<| 0.22499999999999964` -> a |> [0.22499999999999961`]
both give the value a, whereas
<| 0.22499999999999964` -> a |> [0.22499999999999966`] gives Missing as an answer.
associations machine-precision
$endgroup$
add a comment |
$begingroup$
Can someone explain me how Mathematica's Associations behave with inexact numbers as keys:
<| 0.22499999999999964` -> a |> [0.22499999999999965`]
and
<| 0.22499999999999964` -> a |> [0.22499999999999961`]
both give the value a, whereas
<| 0.22499999999999964` -> a |> [0.22499999999999966`] gives Missing as an answer.
associations machine-precision
$endgroup$
1
$begingroup$
Looks like this thing, but with associations. Why do you need to use inexact numbers as keys?
$endgroup$
– J. M. is slightly pensive♦
1 hour ago
1
$begingroup$
"Can someone explain me how Mathematica's Associations behave [...]?" They behave badly. Don't do that.
$endgroup$
– Henrik Schumacher
1 hour ago
add a comment |
$begingroup$
Can someone explain me how Mathematica's Associations behave with inexact numbers as keys:
<| 0.22499999999999964` -> a |> [0.22499999999999965`]
and
<| 0.22499999999999964` -> a |> [0.22499999999999961`]
both give the value a, whereas
<| 0.22499999999999964` -> a |> [0.22499999999999966`] gives Missing as an answer.
associations machine-precision
$endgroup$
Can someone explain me how Mathematica's Associations behave with inexact numbers as keys:
<| 0.22499999999999964` -> a |> [0.22499999999999965`]
and
<| 0.22499999999999964` -> a |> [0.22499999999999961`]
both give the value a, whereas
<| 0.22499999999999964` -> a |> [0.22499999999999966`] gives Missing as an answer.
associations machine-precision
associations machine-precision
asked 1 hour ago
Ali HashmiAli Hashmi
5,69731432
5,69731432
1
$begingroup$
Looks like this thing, but with associations. Why do you need to use inexact numbers as keys?
$endgroup$
– J. M. is slightly pensive♦
1 hour ago
1
$begingroup$
"Can someone explain me how Mathematica's Associations behave [...]?" They behave badly. Don't do that.
$endgroup$
– Henrik Schumacher
1 hour ago
add a comment |
1
$begingroup$
Looks like this thing, but with associations. Why do you need to use inexact numbers as keys?
$endgroup$
– J. M. is slightly pensive♦
1 hour ago
1
$begingroup$
"Can someone explain me how Mathematica's Associations behave [...]?" They behave badly. Don't do that.
$endgroup$
– Henrik Schumacher
1 hour ago
1
1
$begingroup$
Looks like this thing, but with associations. Why do you need to use inexact numbers as keys?
$endgroup$
– J. M. is slightly pensive♦
1 hour ago
$begingroup$
Looks like this thing, but with associations. Why do you need to use inexact numbers as keys?
$endgroup$
– J. M. is slightly pensive♦
1 hour ago
1
1
$begingroup$
"Can someone explain me how Mathematica's Associations behave [...]?" They behave badly. Don't do that.
$endgroup$
– Henrik Schumacher
1 hour ago
$begingroup$
"Can someone explain me how Mathematica's Associations behave [...]?" They behave badly. Don't do that.
$endgroup$
– Henrik Schumacher
1 hour ago
add a comment |
1 Answer
1
active
oldest
votes
$begingroup$
Lookups with inexact numbers behave like other lookups: they use hashing. We can check that the results are consistent with what Hash does.
vals = {0.22499999999999961`, 0.22499999999999964`,
0.22499999999999965`, 0.22499999999999966`};
Hash /@ vals
(* Out[11]= {1879126079618645156, 1879126079618645156,
1879126079618645156, 5861724109654749116} *)
When hashing approximate values, there are going to be sharp boundaries (discontinuities, in effect). This is a tradeoff between having "very" close neighbors hash to the same value, and maintaining transitivity.
$endgroup$
add a comment |
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "387"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f194309%2finexact-numbers-as-keys-in-association%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Lookups with inexact numbers behave like other lookups: they use hashing. We can check that the results are consistent with what Hash does.
vals = {0.22499999999999961`, 0.22499999999999964`,
0.22499999999999965`, 0.22499999999999966`};
Hash /@ vals
(* Out[11]= {1879126079618645156, 1879126079618645156,
1879126079618645156, 5861724109654749116} *)
When hashing approximate values, there are going to be sharp boundaries (discontinuities, in effect). This is a tradeoff between having "very" close neighbors hash to the same value, and maintaining transitivity.
$endgroup$
add a comment |
$begingroup$
Lookups with inexact numbers behave like other lookups: they use hashing. We can check that the results are consistent with what Hash does.
vals = {0.22499999999999961`, 0.22499999999999964`,
0.22499999999999965`, 0.22499999999999966`};
Hash /@ vals
(* Out[11]= {1879126079618645156, 1879126079618645156,
1879126079618645156, 5861724109654749116} *)
When hashing approximate values, there are going to be sharp boundaries (discontinuities, in effect). This is a tradeoff between having "very" close neighbors hash to the same value, and maintaining transitivity.
$endgroup$
add a comment |
$begingroup$
Lookups with inexact numbers behave like other lookups: they use hashing. We can check that the results are consistent with what Hash does.
vals = {0.22499999999999961`, 0.22499999999999964`,
0.22499999999999965`, 0.22499999999999966`};
Hash /@ vals
(* Out[11]= {1879126079618645156, 1879126079618645156,
1879126079618645156, 5861724109654749116} *)
When hashing approximate values, there are going to be sharp boundaries (discontinuities, in effect). This is a tradeoff between having "very" close neighbors hash to the same value, and maintaining transitivity.
$endgroup$
Lookups with inexact numbers behave like other lookups: they use hashing. We can check that the results are consistent with what Hash does.
vals = {0.22499999999999961`, 0.22499999999999964`,
0.22499999999999965`, 0.22499999999999966`};
Hash /@ vals
(* Out[11]= {1879126079618645156, 1879126079618645156,
1879126079618645156, 5861724109654749116} *)
When hashing approximate values, there are going to be sharp boundaries (discontinuities, in effect). This is a tradeoff between having "very" close neighbors hash to the same value, and maintaining transitivity.
answered 1 hour ago
Daniel LichtblauDaniel Lichtblau
47.3k276164
47.3k276164
add a comment |
add a comment |
Thanks for contributing an answer to Mathematica Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f194309%2finexact-numbers-as-keys-in-association%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown

1
$begingroup$
Looks like this thing, but with associations. Why do you need to use inexact numbers as keys?
$endgroup$
– J. M. is slightly pensive♦
1 hour ago
1
$begingroup$
"Can someone explain me how Mathematica's Associations behave [...]?" They behave badly. Don't do that.
$endgroup$
– Henrik Schumacher
1 hour ago