Đây là một tốt câu hỏi vì các thuật toán số hiểu biết và hiệu suất là một điều kiện tiên quyết quan trọng để trở thành một nhà khoa học tính toán hiệu quả. Đồng thời, đó là một câu hỏi kém vì các ràng buộc như đặt ra không đủ điều kiện để đưa ra một câu trả lời có ý nghĩa.
Hiệu suất của ba tính toán sẽ phụ thuộc mạnh mẽ vào độ chính xác cần thiết trong kết quả cuối cùng cũng như độ chính xác tối thiểu cần thiết để biểu diễn các toán hạng. Bạn đủ điều kiện , b và c là số thực dương, nhưng chúng tôi cũng cần biết có bao nhiêu chữ số nhị phân d n được yêu cầu để thể hiện chúng một cách chính xác. Để hiểu các cân nhắc về hiệu suất cho các số thực chung, trước tiên chúng ta cần hiểu cách máy tính biểu diễn các số nguyên cũng như cách nó xấp xỉ các số thực bằng cách sử dụng các số có dấu phẩy động.abcdn
Khi máy tính hoạt động trên một số nguyên , thì số chữ số nhị phân cần thiết rõ ràng bằng với nhật ký 2 về độ lớn của số nguyên, cộng thêm một bit để xử lý dấu:M2
log 2 | M | + 1dn=2|M|+1
Ví dụ, số -8 có thể được biểu diễn bằng 4 chữ số nhị phân. Đối với hiệu suất và hiệu quả không gian, các đơn vị logic số học (ALU), chịu trách nhiệm tính toán số nguyên trên các đơn vị xử lý hiện đại, được thiết kế để xử lý toán học trên các số nguyên lên đến một số kích thước cố định, phổ biến nhất hiện nay là d = 32 và d = 64. Không chỉ bộ xử lý x86 như trong máy tính của bạn có ALU, chúng là một khối xây dựng cơ bản của kiến trúc máy tính có mặt khắp nơi trong xã hội điện tử ngày nay. Nếu bạn đã quen thuộc với bảng điều khiển trò chơi video, bạn có thể nhớ Nintendo 64, một hệ thống trò chơi video được đặt tên theo kích thước (tính bằng bit), các đơn vị logic số học trên bộ xử lý của giao diện điều khiển được thiết kế để xử lý.
Các phép cộng, phép trừ và phép nhân số nguyên trên các đơn vị logic số học rất hiệu quả và thường không yêu cầu quá nhiều chu kỳ để tính toán. Các bộ phận ít hiệu suất hơn và trên các bộ xử lý hiện đại có thể cần tới vài chục chu kỳ. Hiệu suất phụ thuộc vào cả kiến trúc của đơn vị xử lý (và việc thực hiện tương ứng của đơn vị logic số học) và tần số của nó. Lưu ý rằng bộ xử lý 64 bit thường có thể thực hiện số học trên các toán hạng -bit với cùng tốc độ cho x ở bất cứ đâu trong khoảng từ 1 đến 64.xx
nbb=2b=10sex sau đó được đại diện xấp xỉ là:
x=s∗be
13dn.
Một lượng đáng kể nỗ lực trí tuệ trong 50 năm qua đã được đầu tư để cải thiện khả năng của bộ xử lý để tính toán các phép toán dấu phẩy động số học một cách hiệu quả. Trên các bộ xử lý hiện đại, các tính toán này được xử lý bởi một hoặc nhiều đơn vị Dấu phẩy động (FPU), một phiên bản tinh vi hơn của đơn vị logic số học được thiết kế để thực hiện các phép toán số học trên các số có dấu phẩy động và thường được thiết kế để xử lý cả 32 theo chỉ định của IEEE 754 -bit số dấu phẩy động (thường được gọi là 'số float') và số dấu phẩy động 64 bit (thường được gọi là 'nhân đôi') một cách hiệu quả. Tương tự như các đơn vị logic số học, các đơn vị dấu phẩy động thường có thể tính toán phép cộng, phép trừ và phép nhân chỉ trong một vài chu kỳ, trong khi phép chia thường đòi hỏi nhiều hơn một chút.
abc
- ab
- ac
- c1b
1 lũy thừa chung thường được thực hiện với danh tính sau:
ab=βa⋅logβb
β2eβ=2abt=a⋅log2b2t
FYL2X + F2XM1 + ~ 20 = 80 + 51 + ~ 20 = ~ 151 chu kỳ
2 Điều này có thể được chuyển đổi thành hai logarit và phân chia bằng cách thay đổi danh tính cơ sở và không cần thay đổi kích thước để có kết quả chính xác.
2 * FYL2X + FDIV = 2 * 80 + (7 đến 27) = 167 đến 187 chu kỳ
[3] Điều này tương đương với một phân chia theo sau là lũy thừa, vì vậy [1] cộng với FDIV, ~ 175 chu kỳ.