The mathematical set of complex numbers, defined as the the set of reals with possibly imaginary components. i.e. $$\\{a + bi \\ : \\ a,b \in R\\}$$ where \(R\) is the set of reals.

Details

There is no inherent ordering in the set of complex numbers, hence only the contains method is implemented here.

See also

Super class

set6::Set -> Complex

Methods

Public methods

Inherited methods

Method new()

Create a new Complex object.

Usage

Complex$new()

Returns

A new Complex object.


Method contains()

Tests to see if x is contained in the Set.

Usage

Complex$contains(x, all = FALSE, bound = NULL)

Arguments

x

any. Object or vector of objects to test.

all

logical. If FALSE tests each x separately. Otherwise returns TRUE only if all x pass test.

bound

logical.

Details

x can be of any type, including a Set itself. x should be a tuple if checking to see if it lies within a set of dimension greater than one. To test for multiple x at the same time, then provide these as a list.

If all = TRUE then returns TRUE if all x are contained in the Set, otherwise returns a vector of logicals. For Intervals, bound is used to specify if elements lying on the (possibly open) boundary of the interval are considered contained (bound = TRUE) or not (bound = FALSE).

Returns

If all is TRUE then returns TRUE if all elements of x are contained in the Set, otherwise FALSE. If all is FALSE then returns a vector of logicals corresponding to each individual element of x.

The infix operator %inset% is available to test if x is an element in the Set, see examples.


Method equals()

Tests if two sets are equal.

Usage

Complex$equals(x, all = FALSE)

Arguments

x

Set or vector of Sets.

all

logical. If FALSE tests each x separately. Otherwise returns TRUE only if all x pass test.

Returns

If all is TRUE then returns TRUE if all x are equal to the Set, otherwise FALSE. If all is FALSE then returns a vector of logicals corresponding to each individual element of x.

Infix operators can be used for:

Equal==
Not equal!=

Examples

# Equals
Set$new(1,2)$equals(Set$new(5,6))
Set$new(1,2)$equals(Interval$new(1,2))
Set$new(1,2) == Interval$new(1,2, class = "integer")

# Not equal
!Set$new(1,2)$equals(Set$new(1,2))
Set$new(1,2) != Set$new(1,5)


Method isSubset()

Test if one set is a (proper) subset of another

Usage

Complex$isSubset(x, proper = FALSE, all = FALSE)

Arguments

x

any. Object or vector of objects to test.

proper

logical. If TRUE tests for proper subsets.

all

logical. If FALSE tests each x separately. Otherwise returns TRUE only if all x pass test.

Details

If using the method directly, and not via one of the operators then the additional boolean argument proper can be used to specify testing of subsets or proper subsets. A Set is a proper subset of another if it is fully contained by the other Set (i.e. not equal to) whereas a Set is a (non-proper) subset if it is fully contained by, or equal to, the other Set.

When calling $isSubset on objects inheriting from Interval, the method treats the interval as if it is a Set, i.e. ordering and class are ignored. Use $isSubinterval to test if one interval is a subinterval of another.

Infix operators can be used for:

Subset<
Proper Subset<=
Superset>
Proper Superset>=

Every Set is a subset of a Universal. No Set is a super set of a Universal, and only a Universal is not a proper subset of a Universal.

Returns

If all is TRUE then returns TRUE if all x are subsets of the Set, otherwise FALSE. If all is FALSE then returns a vector of logicals corresponding to each individual element of x.

Examples

Set$new(1,2,3)$isSubset(Set$new(1,2), proper = TRUE)
Set$new(1,2) < Set$new(1,2,3) # proper subset

c(Set$new(1,2,3), Set$new(1)) < Set$new(1,2,3) # not proper
Set$new(1,2,3) <= Set$new(1,2,3) # proper


Method strprint()

Creates a printable representation of the object.

Usage

Complex$strprint(n = 2)

Arguments

n

numeric. Number of elements to display on either side of ellipsis when printing.

Returns

A character string representing the object.


Method clone()

The objects of this class are cloneable with this method.

Usage

Complex$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples


## ------------------------------------------------
## Method `Complex$equals`
## ------------------------------------------------

# Equals
Set$new(1,2)$equals(Set$new(5,6))
#> Called from: FUN(X[[i]], ...)
#> debug: if (!testSet(y)) {
#>     return(FALSE)
#> }
#> debug: if (testFuzzy(y)) {
#>     if (!all(y$membership() == 1)) {
#>         return(FALSE)
#>     }
#> }
#> debug: if (testConditionalSet(y)) {
#>     return(FALSE)
#> } else if (testInterval(y)) {
#>     if (testCountablyFinite(y)) {
#>         return(all(suppressWarnings(y$elements %in% self$elements & 
#>             self$elements %in% y$elements)))
#>     }
#>     else {
#>         return(FALSE)
#>     }
#> } else if (sum(testEmpty(self), testEmpty(y)) == 1) {
#>     return(FALSE)
#> } else {
#>     comp <- suppressWarnings(y$.__enclos_env__$private$.str_elements %in% 
#>         private$.str_elements & private$.str_elements %in% y$.__enclos_env__$private$.str_elements)
#>     return(all(comp))
#> }
#> debug: if (testInterval(y)) {
#>     if (testCountablyFinite(y)) {
#>         return(all(suppressWarnings(y$elements %in% self$elements & 
#>             self$elements %in% y$elements)))
#>     }
#>     else {
#>         return(FALSE)
#>     }
#> } else if (sum(testEmpty(self), testEmpty(y)) == 1) {
#>     return(FALSE)
#> } else {
#>     comp <- suppressWarnings(y$.__enclos_env__$private$.str_elements %in% 
#>         private$.str_elements & private$.str_elements %in% y$.__enclos_env__$private$.str_elements)
#>     return(all(comp))
#> }
#> debug: if (sum(testEmpty(self), testEmpty(y)) == 1) {
#>     return(FALSE)
#> } else {
#>     comp <- suppressWarnings(y$.__enclos_env__$private$.str_elements %in% 
#>         private$.str_elements & private$.str_elements %in% y$.__enclos_env__$private$.str_elements)
#>     return(all(comp))
#> }
#> debug: comp <- suppressWarnings(y$.__enclos_env__$private$.str_elements %in% 
#>     private$.str_elements & private$.str_elements %in% y$.__enclos_env__$private$.str_elements)
#> debug: return(all(comp))
#> [1] FALSE
Set$new(1,2)$equals(Interval$new(1,2))
#> Called from: FUN(X[[i]], ...)
#> debug: if (!testSet(y)) {
#>     return(FALSE)
#> }
#> debug: if (testFuzzy(y)) {
#>     if (!all(y$membership() == 1)) {
#>         return(FALSE)
#>     }
#> }
#> debug: if (testConditionalSet(y)) {
#>     return(FALSE)
#> } else if (testInterval(y)) {
#>     if (testCountablyFinite(y)) {
#>         return(all(suppressWarnings(y$elements %in% self$elements & 
#>             self$elements %in% y$elements)))
#>     }
#>     else {
#>         return(FALSE)
#>     }
#> } else if (sum(testEmpty(self), testEmpty(y)) == 1) {
#>     return(FALSE)
#> } else {
#>     comp <- suppressWarnings(y$.__enclos_env__$private$.str_elements %in% 
#>         private$.str_elements & private$.str_elements %in% y$.__enclos_env__$private$.str_elements)
#>     return(all(comp))
#> }
#> debug: if (testInterval(y)) {
#>     if (testCountablyFinite(y)) {
#>         return(all(suppressWarnings(y$elements %in% self$elements & 
#>             self$elements %in% y$elements)))
#>     }
#>     else {
#>         return(FALSE)
#>     }
#> } else if (sum(testEmpty(self), testEmpty(y)) == 1) {
#>     return(FALSE)
#> } else {
#>     comp <- suppressWarnings(y$.__enclos_env__$private$.str_elements %in% 
#>         private$.str_elements & private$.str_elements %in% y$.__enclos_env__$private$.str_elements)
#>     return(all(comp))
#> }
#> debug: if (testCountablyFinite(y)) {
#>     return(all(suppressWarnings(y$elements %in% self$elements & 
#>         self$elements %in% y$elements)))
#> } else {
#>     return(FALSE)
#> }
#> debug: return(FALSE)
#> [1] FALSE
Set$new(1,2) == Interval$new(1,2, class = "integer")
#> Called from: FUN(X[[i]], ...)
#> debug: if (!testSet(y)) {
#>     return(FALSE)
#> }
#> debug: if (testFuzzy(y)) {
#>     if (!all(y$membership() == 1)) {
#>         return(FALSE)
#>     }
#> }
#> debug: if (testConditionalSet(y)) {
#>     return(FALSE)
#> } else if (testInterval(y)) {
#>     if (testCountablyFinite(y)) {
#>         return(all(suppressWarnings(y$elements %in% self$elements & 
#>             self$elements %in% y$elements)))
#>     }
#>     else {
#>         return(FALSE)
#>     }
#> } else if (sum(testEmpty(self), testEmpty(y)) == 1) {
#>     return(FALSE)
#> } else {
#>     comp <- suppressWarnings(y$.__enclos_env__$private$.str_elements %in% 
#>         private$.str_elements & private$.str_elements %in% y$.__enclos_env__$private$.str_elements)
#>     return(all(comp))
#> }
#> debug: if (testInterval(y)) {
#>     if (testCountablyFinite(y)) {
#>         return(all(suppressWarnings(y$elements %in% self$elements & 
#>             self$elements %in% y$elements)))
#>     }
#>     else {
#>         return(FALSE)
#>     }
#> } else if (sum(testEmpty(self), testEmpty(y)) == 1) {
#>     return(FALSE)
#> } else {
#>     comp <- suppressWarnings(y$.__enclos_env__$private$.str_elements %in% 
#>         private$.str_elements & private$.str_elements %in% y$.__enclos_env__$private$.str_elements)
#>     return(all(comp))
#> }
#> debug: if (testCountablyFinite(y)) {
#>     return(all(suppressWarnings(y$elements %in% self$elements & 
#>         self$elements %in% y$elements)))
#> } else {
#>     return(FALSE)
#> }
#> debug: return(all(suppressWarnings(y$elements %in% self$elements & self$elements %in% 
#>     y$elements)))
#> [1] TRUE

# Not equal
!Set$new(1,2)$equals(Set$new(1,2))
#> Called from: FUN(X[[i]], ...)
#> debug: if (!testSet(y)) {
#>     return(FALSE)
#> }
#> debug: if (testFuzzy(y)) {
#>     if (!all(y$membership() == 1)) {
#>         return(FALSE)
#>     }
#> }
#> debug: if (testConditionalSet(y)) {
#>     return(FALSE)
#> } else if (testInterval(y)) {
#>     if (testCountablyFinite(y)) {
#>         return(all(suppressWarnings(y$elements %in% self$elements & 
#>             self$elements %in% y$elements)))
#>     }
#>     else {
#>         return(FALSE)
#>     }
#> } else if (sum(testEmpty(self), testEmpty(y)) == 1) {
#>     return(FALSE)
#> } else {
#>     comp <- suppressWarnings(y$.__enclos_env__$private$.str_elements %in% 
#>         private$.str_elements & private$.str_elements %in% y$.__enclos_env__$private$.str_elements)
#>     return(all(comp))
#> }
#> debug: if (testInterval(y)) {
#>     if (testCountablyFinite(y)) {
#>         return(all(suppressWarnings(y$elements %in% self$elements & 
#>             self$elements %in% y$elements)))
#>     }
#>     else {
#>         return(FALSE)
#>     }
#> } else if (sum(testEmpty(self), testEmpty(y)) == 1) {
#>     return(FALSE)
#> } else {
#>     comp <- suppressWarnings(y$.__enclos_env__$private$.str_elements %in% 
#>         private$.str_elements & private$.str_elements %in% y$.__enclos_env__$private$.str_elements)
#>     return(all(comp))
#> }
#> debug: if (sum(testEmpty(self), testEmpty(y)) == 1) {
#>     return(FALSE)
#> } else {
#>     comp <- suppressWarnings(y$.__enclos_env__$private$.str_elements %in% 
#>         private$.str_elements & private$.str_elements %in% y$.__enclos_env__$private$.str_elements)
#>     return(all(comp))
#> }
#> debug: comp <- suppressWarnings(y$.__enclos_env__$private$.str_elements %in% 
#>     private$.str_elements & private$.str_elements %in% y$.__enclos_env__$private$.str_elements)
#> debug: return(all(comp))
#> [1] FALSE
Set$new(1,2) != Set$new(1,5)
#> Called from: FUN(X[[i]], ...)
#> debug: if (!testSet(y)) {
#>     return(FALSE)
#> }
#> debug: if (testFuzzy(y)) {
#>     if (!all(y$membership() == 1)) {
#>         return(FALSE)
#>     }
#> }
#> debug: if (testConditionalSet(y)) {
#>     return(FALSE)
#> } else if (testInterval(y)) {
#>     if (testCountablyFinite(y)) {
#>         return(all(suppressWarnings(y$elements %in% self$elements & 
#>             self$elements %in% y$elements)))
#>     }
#>     else {
#>         return(FALSE)
#>     }
#> } else if (sum(testEmpty(self), testEmpty(y)) == 1) {
#>     return(FALSE)
#> } else {
#>     comp <- suppressWarnings(y$.__enclos_env__$private$.str_elements %in% 
#>         private$.str_elements & private$.str_elements %in% y$.__enclos_env__$private$.str_elements)
#>     return(all(comp))
#> }
#> debug: if (testInterval(y)) {
#>     if (testCountablyFinite(y)) {
#>         return(all(suppressWarnings(y$elements %in% self$elements & 
#>             self$elements %in% y$elements)))
#>     }
#>     else {
#>         return(FALSE)
#>     }
#> } else if (sum(testEmpty(self), testEmpty(y)) == 1) {
#>     return(FALSE)
#> } else {
#>     comp <- suppressWarnings(y$.__enclos_env__$private$.str_elements %in% 
#>         private$.str_elements & private$.str_elements %in% y$.__enclos_env__$private$.str_elements)
#>     return(all(comp))
#> }
#> debug: if (sum(testEmpty(self), testEmpty(y)) == 1) {
#>     return(FALSE)
#> } else {
#>     comp <- suppressWarnings(y$.__enclos_env__$private$.str_elements %in% 
#>         private$.str_elements & private$.str_elements %in% y$.__enclos_env__$private$.str_elements)
#>     return(all(comp))
#> }
#> debug: comp <- suppressWarnings(y$.__enclos_env__$private$.str_elements %in% 
#>     private$.str_elements & private$.str_elements %in% y$.__enclos_env__$private$.str_elements)
#> debug: return(all(comp))
#> [1] TRUE

## ------------------------------------------------
## Method `Complex$isSubset`
## ------------------------------------------------

Set$new(1,2,3)$isSubset(Set$new(1,2), proper = TRUE)
#> [1] TRUE
Set$new(1,2) < Set$new(1,2,3) # proper subset
#> [1] TRUE

c(Set$new(1,2,3), Set$new(1)) < Set$new(1,2,3) # not proper
#> [1] FALSE  TRUE
Set$new(1,2,3) <= Set$new(1,2,3) # proper
#> [1] TRUE