Tôi đang tìm cách gửi bản vá cho thư viện chuẩn ngôn ngữ lập trình D sẽ cho phép đánh giá nhiều std.math tại thời gian biên dịch bằng cách sử dụng các tiện ích đánh giá chức năng biên dịch của ngôn ngữ. Đánh giá chức năng biên dịch thời gian có một số giới hạn, những điều quan trọng nhất là:Nơi tìm các thuật toán cho các hàm toán học chuẩn?
- Bạn không thể sử dụng ngôn ngữ lắp ráp.
- Bạn không thể gọi mã C hoặc mã mà nguồn không khả dụng.
Một số chức năng std.math vi phạm các phiên bản biên dịch và thời gian cần phải được viết. Tôi có thể lấy thông tin về thuật toán tốt ở đâu để tính toán những thứ như logarit, lũy thừa, quyền hạn và chức năng trig? Tôi thích giới thiệu mức chỉ cao các thuật toán để mã thực tế, vì hai lý do:
Để tránh sự mơ hồ về pháp lý và sự cần thiết phải làm cho cái nhìn mã của tôi "khác nhau, đủ" từ nguồn đến chắc chắn rằng tôi sở hữu bản quyền.
Tôi muốn các thuật toán đơn giản, di động. Tôi không quan tâm đến tối ưu hóa vi mô miễn là chúng tối thiểu hiệu quả tiệm cận.
Edit: D's mô hình đánh giá chức năng thời gian biên dịch cho phép kết quả điểm tính tại thời gian biên dịch khác với những tính toán trong thời gian chạy dù sao đi nữa nổi, vì vậy tôi không quan tâm nếu thuật toán thời gian biên dịch của tôi không cho chính xác cùng một kết quả như phiên bản thời gian chạy miễn là chúng không kém chính xác đến mức độ thực tế đáng kể.
hmmm - có vẻ tốt về lý thuyết chung về xấp xỉ hàm. nhưng đọc bảng mục lục, chúng dường như không đi qua các chức năng cụ thể. hầu hết các hàm, nếu được đánh giá trên một phạm vi hữu hạn, không khó tính toán. Nhưng trên phạm vi đầy đủ của các đầu vào 'double', exp() và log() và sqrt() không tầm thường để thực hiện. (sin/cos/tan có thể sử dụng giảm phạm vi) Sau đó, bạn nhận được vào erf và gamma và bessel chức năng và các công cụ khác. –