Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add fdiv() function #4769

Closed
wants to merge 2 commits into from
Closed

Add fdiv() function #4769

wants to merge 2 commits into from

Conversation

nikic
Copy link
Member

@nikic nikic commented Oct 2, 2019

The fdiv() function is part of the fmod() / intdiv() family. It implements a floating-point division with IEEE-754 semantics. That is, division by zero is considered well-defined and does not trigger any kind of diagnostic. Instead one of INF, -INF or NAN will be returned, depending on the case.

This is in preparation for throwing DivisionByZeroError from the standard division operator.

@@ -1143,6 +1143,11 @@ ZEND_BEGIN_ARG_INFO(arginfo_fmod, 0)
ZEND_ARG_INFO(0, y)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO(arginfo_fdiv, 0)
Copy link
Contributor

@TysonAndre TysonAndre Oct 2, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks like it could add Reflection param and return types, with/without being generated by stubs (some of the above functions already do)

$dividend and $divisor could be used as names to match intdiv.

Copy link
Member Author

@nikic nikic Oct 11, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I expect that these functions will be converted to stubs very soon, so I'm leaving it for now.

bishopb
bishopb approved these changes Oct 2, 2019
#ifdef __clang__
__attribute__((no_sanitize("float-divide-by-zero")))
#endif
PHP_FUNCTION(fdiv)
Copy link
Contributor

@bishopb bishopb Oct 2, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I recognize the etymology, but I wonder if floatdiv would be a more natural PHP name: it's verbose, and pairs with intdiv obviously. Said another way, the behavior seems closer to intdiv than fmod, so the name should be more closely aligned with the former (floatdiv) than the latter (fdiv).

Copy link

@adamwojs adamwojs Oct 2, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Said another way, the behavior seems closer to intdiv than fmod, so the name should be more closely aligned with the former (floatdiv) than the latter (fdiv).

That true, but if someone would ask me a question "What is a complementary (?) function to fmod?" my first guess would be fdiv. Just sharing my thoughs 😉

ext/standard/math.c Outdated Show resolved Hide resolved
@krakjoe krakjoe added the Feature label Oct 2, 2019
@nikic
Copy link
Member Author

@nikic nikic commented Oct 11, 2019

Merged as e35bdb4.

@nikic nikic closed this Oct 11, 2019
jfcherng added a commit to jfcherng-sublime/ST-Official-Packages that referenced this issue Mar 27, 2020
php/php-src#4769

Signed-off-by: Jack Cherng <jfcherng@gmail.com>
jfcherng added a commit to jfcherng-sublime/ST-Official-Packages that referenced this issue Apr 9, 2020
php/php-src#4769

Signed-off-by: Jack Cherng <jfcherng@gmail.com>
jfcherng added a commit to jfcherng-sublime/ST-Official-Packages that referenced this issue Apr 9, 2020
php/php-src#4769

Signed-off-by: Jack Cherng <jfcherng@gmail.com>
jfcherng added a commit to jfcherng-sublime/ST-Official-Packages that referenced this issue Apr 9, 2020
php/php-src#4769

Signed-off-by: Jack Cherng <jfcherng@gmail.com>
jfcherng added a commit to jfcherng-sublime/ST-Official-Packages that referenced this issue Apr 11, 2020
php/php-src#4769

Signed-off-by: Jack Cherng <jfcherng@gmail.com>
@carusogabriel carusogabriel added this to the PHP 8.0 milestone May 29, 2020
jfcherng added a commit to jfcherng-sublime/ST-Official-Packages that referenced this issue Jul 15, 2020
php/php-src#4769

Signed-off-by: Jack Cherng <jfcherng@gmail.com>
jfcherng added a commit to jfcherng-sublime/ST-Official-Packages that referenced this issue Jul 16, 2020
php/php-src#4769

Signed-off-by: Jack Cherng <jfcherng@gmail.com>
jfcherng added a commit to jfcherng-sublime/ST-Official-Packages that referenced this issue Jul 17, 2020
php/php-src#4769

Signed-off-by: Jack Cherng <jfcherng@gmail.com>
jfcherng added a commit to jfcherng-sublime/ST-Official-Packages that referenced this issue Jul 21, 2020
php/php-src#4769

Signed-off-by: Jack Cherng <jfcherng@gmail.com>
wbond pushed a commit to sublimehq/Packages that referenced this issue Jul 21, 2020
* [PHP] Add some built-in classes and constants

Classes:

ArgumentCountError
ArithmeticError
CompileError
DivisionByZeroError
Error
ParseError
Stringable
TypeError
ValueError
WeakMap
WeakReference

---

Constants:

FILTER_VALIDATE_BOOL

---

https://github.com/symfony/polyfill-php80
https://wiki.php.net/rfc/stringable
https://wiki.php.net/rfc/weak_maps
https://www.php.net/manual/en/reserved.exceptions.php
https://www.php.net/manual/en/spl.exceptions.php

* [PHP] Add support for union types

https://wiki.php.net/rfc/union_types_v2

* [PHP] Add support for "static" return type

https://wiki.php.net/rfc/static_return_type

* [PHP] Add core function: str_contains

https://wiki.php.net/rfc/str_contains

* [PHP] Add core function: get_debug_type

* [PHP] Add built-in class: DateTimeImmutable, DateTimeInterface

* [PHP] Add core function: fdiv

php/php-src#4769

* [PHP] Add built-in class: PhpToken

https://wiki.php.net/rfc/token_as_object

* [PHP] Add core function: str_starts_with, str_ends_with

https://wiki.php.net/rfc/add_str_starts_with_and_ends_with_functions

* [PHP] Add support for short attributes ("@@")

https://wiki.php.net/rfc/attributes_v2
https://wiki.php.net/rfc/attribute_amendments
https://wiki.php.net/rfc/shorter_attribute_syntax

* [PHP] Add support for "mixed" type hinting

https://wiki.php.net/rfc/mixed_type_v2

* [PHP] Add support for constructor property promotion

https://wiki.php.net/rfc/constructor_promotion

* [PHP] Extract visibility modifier as a variable

* [PHP] Add missing constant: DNS_CAA

Fixes #991

* [PHP] Add support for "match" expression

https://wiki.php.net/rfc/match_expression_v2

* [PHP] Add snippet: fn ...

* [PHP] Add snippet: match ...

* [PHP] Add support for named arguments

https://wiki.php.net/rfc/named_params

* [PHP] Add support for nullsafe operator

https://wiki.php.net/rfc/nullsafe_operator

* [PHP] Add core function: get_resource_id

php/php-src#5427

* [PHP] Add built-in class: InternalIterator

php/php-src#5216

* [PHP] Syntax definition use "version: 2"

* [PHP] Fix punctuation scopes have no begin/end
mitranim pushed a commit to mitranim/Packages that referenced this issue Mar 25, 2022
* [PHP] Add some built-in classes and constants

Classes:

ArgumentCountError
ArithmeticError
CompileError
DivisionByZeroError
Error
ParseError
Stringable
TypeError
ValueError
WeakMap
WeakReference

---

Constants:

FILTER_VALIDATE_BOOL

---

https://github.com/symfony/polyfill-php80
https://wiki.php.net/rfc/stringable
https://wiki.php.net/rfc/weak_maps
https://www.php.net/manual/en/reserved.exceptions.php
https://www.php.net/manual/en/spl.exceptions.php

* [PHP] Add support for union types

https://wiki.php.net/rfc/union_types_v2

* [PHP] Add support for "static" return type

https://wiki.php.net/rfc/static_return_type

* [PHP] Add core function: str_contains

https://wiki.php.net/rfc/str_contains

* [PHP] Add core function: get_debug_type

* [PHP] Add built-in class: DateTimeImmutable, DateTimeInterface

* [PHP] Add core function: fdiv

php/php-src#4769

* [PHP] Add built-in class: PhpToken

https://wiki.php.net/rfc/token_as_object

* [PHP] Add core function: str_starts_with, str_ends_with

https://wiki.php.net/rfc/add_str_starts_with_and_ends_with_functions

* [PHP] Add support for short attributes ("@@")

https://wiki.php.net/rfc/attributes_v2
https://wiki.php.net/rfc/attribute_amendments
https://wiki.php.net/rfc/shorter_attribute_syntax

* [PHP] Add support for "mixed" type hinting

https://wiki.php.net/rfc/mixed_type_v2

* [PHP] Add support for constructor property promotion

https://wiki.php.net/rfc/constructor_promotion

* [PHP] Extract visibility modifier as a variable

* [PHP] Add missing constant: DNS_CAA

Fixes sublimehq#991

* [PHP] Add support for "match" expression

https://wiki.php.net/rfc/match_expression_v2

* [PHP] Add snippet: fn ...

* [PHP] Add snippet: match ...

* [PHP] Add support for named arguments

https://wiki.php.net/rfc/named_params

* [PHP] Add support for nullsafe operator

https://wiki.php.net/rfc/nullsafe_operator

* [PHP] Add core function: get_resource_id

php/php-src#5427

* [PHP] Add built-in class: InternalIterator

php/php-src#5216

* [PHP] Syntax definition use "version: 2"

* [PHP] Fix punctuation scopes have no begin/end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants