Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 1033501
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 16, 20262026-05-16T14:14:30+00:00 2026-05-16T14:14:30+00:00

Hints and allegations abound that arithmetic with NaNs can be ‘slow’ in hardware FPUs.

  • 0

Hints and allegations abound that arithmetic with NaNs can be ‘slow’ in hardware FPUs. Specifically in the modern x64 FPU, e.g on a Nehalem i7, is that still true? Do FPU multiplies get churned out at the same speed regardless of the values of the operands?

I have some interpolation code that can wander off the edge of our defined data, and I’m trying to determine whether it’s faster to check for NaNs (or some other sentinel value) here there and everywhere, or just at convenient points.

Yes, I will benchmark my particular case (it could be dominated by something else entirely, like memory bandwidth), but I was surprised not to see a concise summary somewhere to help with my intuition.

I’ll be doing this from the CLR, if it makes a difference as to the flavor of NaNs generated.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-16T14:14:30+00:00Added an answer on May 16, 2026 at 2:14 pm

    For what it’s worth, using the SSE instruction mulsd with NaN is pretty much exactly as fast as with the constant 4.0 (chosen by a fair dice roll, guaranteed to be random).

    This code:

    for (unsigned i = 0; i < 2000000000; i++)
    {
        double j = doubleValue * i;
    }
    

    generates this machine code (inside the loop) with clang (I assume the .NET virtual machine uses SSE instructions when it can too):

    movsd     -16(%rbp), %xmm0    ; gets the constant (NaN or 4.0) into xmm0
    movl      -20(%rbp), %eax     ; puts i into a register
    cvtsi2sdq %rax, %xmm1         ; converts i to a double and puts it in xmm1
    mulsd     %xmm0, %xmm1        ; multiplies xmm0 (the constant) with xmm1 (i)
    movsd     %xmm1, -32(%rbp)    ; puts the result somewhere on the stack
    

    And with two billion iterations, the NaN (as defined by the C macro NAN from <math.h>) version took about 0.017 less seconds to execute on my i7. The difference was probably caused by the task scheduler.

    So to be fair, they’re exactly as fast.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

ReSharper sometimes hints that I can make some of my random utility methods in
Can anybody give me any hints on that? I'm able to display xml content
Can someone give some hints of how to delete the last n lines from
I've setup a static website on GAE using hints found elsewhere, but can't figure
I encountered some strange behavior which hints that I do not understand some basic
Type-hints can make a huge improvement on execution time where reflection occurs many times.
I guess I am looking for hints and info about something that it is
im looking for some tips and hints how i can build up my Application
I've searched for any hints how I can do this, but all I found
I have a form that has values prefilled for usability/hints - unfortunately one of

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.