Constant time evaluation
I can't get this line to run in constant time on my micro-controller:
int zz,yy; //some binary variables
zz = (yy) ? 0 : (1 & zz);
I tried to change it to
zz = (yy) ? (0 & zz) : (1 & zz);
because &
should force an evaluation of the right side even though the left side defines the result as far as I know. But it did not help.
Can anyone suggest me a solution how to make this line constant time?
c microcontroller
|
show 5 more comments
I can't get this line to run in constant time on my micro-controller:
int zz,yy; //some binary variables
zz = (yy) ? 0 : (1 & zz);
I tried to change it to
zz = (yy) ? (0 & zz) : (1 & zz);
because &
should force an evaluation of the right side even though the left side defines the result as far as I know. But it did not help.
Can anyone suggest me a solution how to make this line constant time?
c microcontroller
Can you clarify what you mean by 'constant time'? I would consider this O(1), so do you mean something else, or ...?
– aghast
Nov 22 '18 at 16:00
by constant time, I mean that it always should takex
cycles running on my microcontroller,x
should be equal for both cases0
and1&zz
– jonnyx
Nov 22 '18 at 16:01
5
It entirely depends on your compiler and its settings. Maybe(!yy) * (1 & zz)
helps?
– Quentin
Nov 22 '18 at 16:03
1
it is not about optimization, it is about being constant time (which often implies slower code)
– jonnyx
Nov 24 '18 at 19:35
1
Take a look at Hacker's Delight for more ideas. Or search for "bit twiddling".
– starblue
Nov 25 '18 at 10:53
|
show 5 more comments
I can't get this line to run in constant time on my micro-controller:
int zz,yy; //some binary variables
zz = (yy) ? 0 : (1 & zz);
I tried to change it to
zz = (yy) ? (0 & zz) : (1 & zz);
because &
should force an evaluation of the right side even though the left side defines the result as far as I know. But it did not help.
Can anyone suggest me a solution how to make this line constant time?
c microcontroller
I can't get this line to run in constant time on my micro-controller:
int zz,yy; //some binary variables
zz = (yy) ? 0 : (1 & zz);
I tried to change it to
zz = (yy) ? (0 & zz) : (1 & zz);
because &
should force an evaluation of the right side even though the left side defines the result as far as I know. But it did not help.
Can anyone suggest me a solution how to make this line constant time?
c microcontroller
c microcontroller
edited Nov 26 '18 at 15:06
Stoogy
735725
735725
asked Nov 22 '18 at 15:56
jonnyxjonnyx
1059
1059
Can you clarify what you mean by 'constant time'? I would consider this O(1), so do you mean something else, or ...?
– aghast
Nov 22 '18 at 16:00
by constant time, I mean that it always should takex
cycles running on my microcontroller,x
should be equal for both cases0
and1&zz
– jonnyx
Nov 22 '18 at 16:01
5
It entirely depends on your compiler and its settings. Maybe(!yy) * (1 & zz)
helps?
– Quentin
Nov 22 '18 at 16:03
1
it is not about optimization, it is about being constant time (which often implies slower code)
– jonnyx
Nov 24 '18 at 19:35
1
Take a look at Hacker's Delight for more ideas. Or search for "bit twiddling".
– starblue
Nov 25 '18 at 10:53
|
show 5 more comments
Can you clarify what you mean by 'constant time'? I would consider this O(1), so do you mean something else, or ...?
– aghast
Nov 22 '18 at 16:00
by constant time, I mean that it always should takex
cycles running on my microcontroller,x
should be equal for both cases0
and1&zz
– jonnyx
Nov 22 '18 at 16:01
5
It entirely depends on your compiler and its settings. Maybe(!yy) * (1 & zz)
helps?
– Quentin
Nov 22 '18 at 16:03
1
it is not about optimization, it is about being constant time (which often implies slower code)
– jonnyx
Nov 24 '18 at 19:35
1
Take a look at Hacker's Delight for more ideas. Or search for "bit twiddling".
– starblue
Nov 25 '18 at 10:53
Can you clarify what you mean by 'constant time'? I would consider this O(1), so do you mean something else, or ...?
– aghast
Nov 22 '18 at 16:00
Can you clarify what you mean by 'constant time'? I would consider this O(1), so do you mean something else, or ...?
– aghast
Nov 22 '18 at 16:00
by constant time, I mean that it always should take
x
cycles running on my microcontroller, x
should be equal for both cases 0
and 1&zz
– jonnyx
Nov 22 '18 at 16:01
by constant time, I mean that it always should take
x
cycles running on my microcontroller, x
should be equal for both cases 0
and 1&zz
– jonnyx
Nov 22 '18 at 16:01
5
5
It entirely depends on your compiler and its settings. Maybe
(!yy) * (1 & zz)
helps?– Quentin
Nov 22 '18 at 16:03
It entirely depends on your compiler and its settings. Maybe
(!yy) * (1 & zz)
helps?– Quentin
Nov 22 '18 at 16:03
1
1
it is not about optimization, it is about being constant time (which often implies slower code)
– jonnyx
Nov 24 '18 at 19:35
it is not about optimization, it is about being constant time (which often implies slower code)
– jonnyx
Nov 24 '18 at 19:35
1
1
Take a look at Hacker's Delight for more ideas. Or search for "bit twiddling".
– starblue
Nov 25 '18 at 10:53
Take a look at Hacker's Delight for more ideas. Or search for "bit twiddling".
– starblue
Nov 25 '18 at 10:53
|
show 5 more comments
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
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: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
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%2fstackoverflow.com%2fquestions%2f53434554%2fconstant-time-evaluation%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- 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.
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%2fstackoverflow.com%2fquestions%2f53434554%2fconstant-time-evaluation%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
Can you clarify what you mean by 'constant time'? I would consider this O(1), so do you mean something else, or ...?
– aghast
Nov 22 '18 at 16:00
by constant time, I mean that it always should take
x
cycles running on my microcontroller,x
should be equal for both cases0
and1&zz
– jonnyx
Nov 22 '18 at 16:01
5
It entirely depends on your compiler and its settings. Maybe
(!yy) * (1 & zz)
helps?– Quentin
Nov 22 '18 at 16:03
1
it is not about optimization, it is about being constant time (which often implies slower code)
– jonnyx
Nov 24 '18 at 19:35
1
Take a look at Hacker's Delight for more ideas. Or search for "bit twiddling".
– starblue
Nov 25 '18 at 10:53