Source file src/cmd/compile/internal/test/conditionalCmpConst_test.go

     1  // Code generated by conditionalCmpConstGen.go; DO NOT EDIT.
     2  
     3  package test
     4  
     5  import "testing"
     6  
     7  type IntegerConstraint interface {
     8  	int | uint | int8 | uint8 | int16 | uint16 | int32 | uint32 | int64 | uint64
     9  }
    10  
    11  type TestCase[T IntegerConstraint] struct {
    12  	cmp1, cmp2                      func(a, b T) bool
    13  	combine                         func(x, y bool) bool
    14  	targetFunc                      func(a, b, c, d T) bool
    15  	cmp1Expr, cmp2Expr, logicalExpr string // String representations for debugging
    16  }
    17  
    18  type BoundaryValues[T IntegerConstraint] struct {
    19  	base     T
    20  	variants [3]T
    21  }
    22  
    23  func generateTestCases[T IntegerConstraint]() []TestCase[T] {
    24  	return []TestCase[T]{
    25  		{
    26  			cmp1:    func(a, b T) bool { return a == b },
    27  			cmp2:    func(a, b T) bool { return a == b },
    28  			combine: func(x, y bool) bool { return (x) && (y) },
    29  			targetFunc: func(a, b, c, d T) bool {
    30  				if (a == b) && (c == d) {
    31  					return true
    32  				}
    33  				return false
    34  			},
    35  			cmp1Expr:    "a == b",
    36  			cmp2Expr:    "c == d",
    37  			logicalExpr: "(a == b) && (c == d)",
    38  		},
    39  		{
    40  			cmp1:    func(a, b T) bool { return a == b },
    41  			cmp2:    func(a, b T) bool { return a == b },
    42  			combine: func(x, y bool) bool { return (x) && !(y) },
    43  			targetFunc: func(a, b, c, d T) bool {
    44  				if (a == b) && !(c == d) {
    45  					return true
    46  				}
    47  				return false
    48  			},
    49  			cmp1Expr:    "a == b",
    50  			cmp2Expr:    "c == d",
    51  			logicalExpr: "(a == b) && !(c == d)",
    52  		},
    53  		{
    54  			cmp1:    func(a, b T) bool { return a == b },
    55  			cmp2:    func(a, b T) bool { return a == b },
    56  			combine: func(x, y bool) bool { return !(x) && (y) },
    57  			targetFunc: func(a, b, c, d T) bool {
    58  				if !(a == b) && (c == d) {
    59  					return true
    60  				}
    61  				return false
    62  			},
    63  			cmp1Expr:    "a == b",
    64  			cmp2Expr:    "c == d",
    65  			logicalExpr: "!(a == b) && (c == d)",
    66  		},
    67  		{
    68  			cmp1:    func(a, b T) bool { return a == b },
    69  			cmp2:    func(a, b T) bool { return a == b },
    70  			combine: func(x, y bool) bool { return !(x) && !(y) },
    71  			targetFunc: func(a, b, c, d T) bool {
    72  				if !(a == b) && !(c == d) {
    73  					return true
    74  				}
    75  				return false
    76  			},
    77  			cmp1Expr:    "a == b",
    78  			cmp2Expr:    "c == d",
    79  			logicalExpr: "!(a == b) && !(c == d)",
    80  		},
    81  		{
    82  			cmp1:    func(a, b T) bool { return a == b },
    83  			cmp2:    func(a, b T) bool { return a == b },
    84  			combine: func(x, y bool) bool { return (x) || (y) },
    85  			targetFunc: func(a, b, c, d T) bool {
    86  				if (a == b) || (c == d) {
    87  					return true
    88  				}
    89  				return false
    90  			},
    91  			cmp1Expr:    "a == b",
    92  			cmp2Expr:    "c == d",
    93  			logicalExpr: "(a == b) || (c == d)",
    94  		},
    95  		{
    96  			cmp1:    func(a, b T) bool { return a == b },
    97  			cmp2:    func(a, b T) bool { return a == b },
    98  			combine: func(x, y bool) bool { return (x) || !(y) },
    99  			targetFunc: func(a, b, c, d T) bool {
   100  				if (a == b) || !(c == d) {
   101  					return true
   102  				}
   103  				return false
   104  			},
   105  			cmp1Expr:    "a == b",
   106  			cmp2Expr:    "c == d",
   107  			logicalExpr: "(a == b) || !(c == d)",
   108  		},
   109  		{
   110  			cmp1:    func(a, b T) bool { return a == b },
   111  			cmp2:    func(a, b T) bool { return a == b },
   112  			combine: func(x, y bool) bool { return !(x) || (y) },
   113  			targetFunc: func(a, b, c, d T) bool {
   114  				if !(a == b) || (c == d) {
   115  					return true
   116  				}
   117  				return false
   118  			},
   119  			cmp1Expr:    "a == b",
   120  			cmp2Expr:    "c == d",
   121  			logicalExpr: "!(a == b) || (c == d)",
   122  		},
   123  		{
   124  			cmp1:    func(a, b T) bool { return a == b },
   125  			cmp2:    func(a, b T) bool { return a == b },
   126  			combine: func(x, y bool) bool { return !(x) || !(y) },
   127  			targetFunc: func(a, b, c, d T) bool {
   128  				if !(a == b) || !(c == d) {
   129  					return true
   130  				}
   131  				return false
   132  			},
   133  			cmp1Expr:    "a == b",
   134  			cmp2Expr:    "c == d",
   135  			logicalExpr: "!(a == b) || !(c == d)",
   136  		},
   137  		{
   138  			cmp1:    func(a, b T) bool { return a == b },
   139  			cmp2:    func(a, b T) bool { return a <= b },
   140  			combine: func(x, y bool) bool { return (x) && (y) },
   141  			targetFunc: func(a, b, c, d T) bool {
   142  				if (a == b) && (c <= d) {
   143  					return true
   144  				}
   145  				return false
   146  			},
   147  			cmp1Expr:    "a == b",
   148  			cmp2Expr:    "c <= d",
   149  			logicalExpr: "(a == b) && (c <= d)",
   150  		},
   151  		{
   152  			cmp1:    func(a, b T) bool { return a == b },
   153  			cmp2:    func(a, b T) bool { return a <= b },
   154  			combine: func(x, y bool) bool { return (x) && !(y) },
   155  			targetFunc: func(a, b, c, d T) bool {
   156  				if (a == b) && !(c <= d) {
   157  					return true
   158  				}
   159  				return false
   160  			},
   161  			cmp1Expr:    "a == b",
   162  			cmp2Expr:    "c <= d",
   163  			logicalExpr: "(a == b) && !(c <= d)",
   164  		},
   165  		{
   166  			cmp1:    func(a, b T) bool { return a == b },
   167  			cmp2:    func(a, b T) bool { return a <= b },
   168  			combine: func(x, y bool) bool { return !(x) && (y) },
   169  			targetFunc: func(a, b, c, d T) bool {
   170  				if !(a == b) && (c <= d) {
   171  					return true
   172  				}
   173  				return false
   174  			},
   175  			cmp1Expr:    "a == b",
   176  			cmp2Expr:    "c <= d",
   177  			logicalExpr: "!(a == b) && (c <= d)",
   178  		},
   179  		{
   180  			cmp1:    func(a, b T) bool { return a == b },
   181  			cmp2:    func(a, b T) bool { return a <= b },
   182  			combine: func(x, y bool) bool { return !(x) && !(y) },
   183  			targetFunc: func(a, b, c, d T) bool {
   184  				if !(a == b) && !(c <= d) {
   185  					return true
   186  				}
   187  				return false
   188  			},
   189  			cmp1Expr:    "a == b",
   190  			cmp2Expr:    "c <= d",
   191  			logicalExpr: "!(a == b) && !(c <= d)",
   192  		},
   193  		{
   194  			cmp1:    func(a, b T) bool { return a == b },
   195  			cmp2:    func(a, b T) bool { return a <= b },
   196  			combine: func(x, y bool) bool { return (x) || (y) },
   197  			targetFunc: func(a, b, c, d T) bool {
   198  				if (a == b) || (c <= d) {
   199  					return true
   200  				}
   201  				return false
   202  			},
   203  			cmp1Expr:    "a == b",
   204  			cmp2Expr:    "c <= d",
   205  			logicalExpr: "(a == b) || (c <= d)",
   206  		},
   207  		{
   208  			cmp1:    func(a, b T) bool { return a == b },
   209  			cmp2:    func(a, b T) bool { return a <= b },
   210  			combine: func(x, y bool) bool { return (x) || !(y) },
   211  			targetFunc: func(a, b, c, d T) bool {
   212  				if (a == b) || !(c <= d) {
   213  					return true
   214  				}
   215  				return false
   216  			},
   217  			cmp1Expr:    "a == b",
   218  			cmp2Expr:    "c <= d",
   219  			logicalExpr: "(a == b) || !(c <= d)",
   220  		},
   221  		{
   222  			cmp1:    func(a, b T) bool { return a == b },
   223  			cmp2:    func(a, b T) bool { return a <= b },
   224  			combine: func(x, y bool) bool { return !(x) || (y) },
   225  			targetFunc: func(a, b, c, d T) bool {
   226  				if !(a == b) || (c <= d) {
   227  					return true
   228  				}
   229  				return false
   230  			},
   231  			cmp1Expr:    "a == b",
   232  			cmp2Expr:    "c <= d",
   233  			logicalExpr: "!(a == b) || (c <= d)",
   234  		},
   235  		{
   236  			cmp1:    func(a, b T) bool { return a == b },
   237  			cmp2:    func(a, b T) bool { return a <= b },
   238  			combine: func(x, y bool) bool { return !(x) || !(y) },
   239  			targetFunc: func(a, b, c, d T) bool {
   240  				if !(a == b) || !(c <= d) {
   241  					return true
   242  				}
   243  				return false
   244  			},
   245  			cmp1Expr:    "a == b",
   246  			cmp2Expr:    "c <= d",
   247  			logicalExpr: "!(a == b) || !(c <= d)",
   248  		},
   249  		{
   250  			cmp1:    func(a, b T) bool { return a == b },
   251  			cmp2:    func(a, b T) bool { return a < b },
   252  			combine: func(x, y bool) bool { return (x) && (y) },
   253  			targetFunc: func(a, b, c, d T) bool {
   254  				if (a == b) && (c < d) {
   255  					return true
   256  				}
   257  				return false
   258  			},
   259  			cmp1Expr:    "a == b",
   260  			cmp2Expr:    "c < d",
   261  			logicalExpr: "(a == b) && (c < d)",
   262  		},
   263  		{
   264  			cmp1:    func(a, b T) bool { return a == b },
   265  			cmp2:    func(a, b T) bool { return a < b },
   266  			combine: func(x, y bool) bool { return (x) && !(y) },
   267  			targetFunc: func(a, b, c, d T) bool {
   268  				if (a == b) && !(c < d) {
   269  					return true
   270  				}
   271  				return false
   272  			},
   273  			cmp1Expr:    "a == b",
   274  			cmp2Expr:    "c < d",
   275  			logicalExpr: "(a == b) && !(c < d)",
   276  		},
   277  		{
   278  			cmp1:    func(a, b T) bool { return a == b },
   279  			cmp2:    func(a, b T) bool { return a < b },
   280  			combine: func(x, y bool) bool { return !(x) && (y) },
   281  			targetFunc: func(a, b, c, d T) bool {
   282  				if !(a == b) && (c < d) {
   283  					return true
   284  				}
   285  				return false
   286  			},
   287  			cmp1Expr:    "a == b",
   288  			cmp2Expr:    "c < d",
   289  			logicalExpr: "!(a == b) && (c < d)",
   290  		},
   291  		{
   292  			cmp1:    func(a, b T) bool { return a == b },
   293  			cmp2:    func(a, b T) bool { return a < b },
   294  			combine: func(x, y bool) bool { return !(x) && !(y) },
   295  			targetFunc: func(a, b, c, d T) bool {
   296  				if !(a == b) && !(c < d) {
   297  					return true
   298  				}
   299  				return false
   300  			},
   301  			cmp1Expr:    "a == b",
   302  			cmp2Expr:    "c < d",
   303  			logicalExpr: "!(a == b) && !(c < d)",
   304  		},
   305  		{
   306  			cmp1:    func(a, b T) bool { return a == b },
   307  			cmp2:    func(a, b T) bool { return a < b },
   308  			combine: func(x, y bool) bool { return (x) || (y) },
   309  			targetFunc: func(a, b, c, d T) bool {
   310  				if (a == b) || (c < d) {
   311  					return true
   312  				}
   313  				return false
   314  			},
   315  			cmp1Expr:    "a == b",
   316  			cmp2Expr:    "c < d",
   317  			logicalExpr: "(a == b) || (c < d)",
   318  		},
   319  		{
   320  			cmp1:    func(a, b T) bool { return a == b },
   321  			cmp2:    func(a, b T) bool { return a < b },
   322  			combine: func(x, y bool) bool { return (x) || !(y) },
   323  			targetFunc: func(a, b, c, d T) bool {
   324  				if (a == b) || !(c < d) {
   325  					return true
   326  				}
   327  				return false
   328  			},
   329  			cmp1Expr:    "a == b",
   330  			cmp2Expr:    "c < d",
   331  			logicalExpr: "(a == b) || !(c < d)",
   332  		},
   333  		{
   334  			cmp1:    func(a, b T) bool { return a == b },
   335  			cmp2:    func(a, b T) bool { return a < b },
   336  			combine: func(x, y bool) bool { return !(x) || (y) },
   337  			targetFunc: func(a, b, c, d T) bool {
   338  				if !(a == b) || (c < d) {
   339  					return true
   340  				}
   341  				return false
   342  			},
   343  			cmp1Expr:    "a == b",
   344  			cmp2Expr:    "c < d",
   345  			logicalExpr: "!(a == b) || (c < d)",
   346  		},
   347  		{
   348  			cmp1:    func(a, b T) bool { return a == b },
   349  			cmp2:    func(a, b T) bool { return a < b },
   350  			combine: func(x, y bool) bool { return !(x) || !(y) },
   351  			targetFunc: func(a, b, c, d T) bool {
   352  				if !(a == b) || !(c < d) {
   353  					return true
   354  				}
   355  				return false
   356  			},
   357  			cmp1Expr:    "a == b",
   358  			cmp2Expr:    "c < d",
   359  			logicalExpr: "!(a == b) || !(c < d)",
   360  		},
   361  		{
   362  			cmp1:    func(a, b T) bool { return a == b },
   363  			cmp2:    func(a, b T) bool { return a != b },
   364  			combine: func(x, y bool) bool { return (x) && (y) },
   365  			targetFunc: func(a, b, c, d T) bool {
   366  				if (a == b) && (c != d) {
   367  					return true
   368  				}
   369  				return false
   370  			},
   371  			cmp1Expr:    "a == b",
   372  			cmp2Expr:    "c != d",
   373  			logicalExpr: "(a == b) && (c != d)",
   374  		},
   375  		{
   376  			cmp1:    func(a, b T) bool { return a == b },
   377  			cmp2:    func(a, b T) bool { return a != b },
   378  			combine: func(x, y bool) bool { return (x) && !(y) },
   379  			targetFunc: func(a, b, c, d T) bool {
   380  				if (a == b) && !(c != d) {
   381  					return true
   382  				}
   383  				return false
   384  			},
   385  			cmp1Expr:    "a == b",
   386  			cmp2Expr:    "c != d",
   387  			logicalExpr: "(a == b) && !(c != d)",
   388  		},
   389  		{
   390  			cmp1:    func(a, b T) bool { return a == b },
   391  			cmp2:    func(a, b T) bool { return a != b },
   392  			combine: func(x, y bool) bool { return !(x) && (y) },
   393  			targetFunc: func(a, b, c, d T) bool {
   394  				if !(a == b) && (c != d) {
   395  					return true
   396  				}
   397  				return false
   398  			},
   399  			cmp1Expr:    "a == b",
   400  			cmp2Expr:    "c != d",
   401  			logicalExpr: "!(a == b) && (c != d)",
   402  		},
   403  		{
   404  			cmp1:    func(a, b T) bool { return a == b },
   405  			cmp2:    func(a, b T) bool { return a != b },
   406  			combine: func(x, y bool) bool { return !(x) && !(y) },
   407  			targetFunc: func(a, b, c, d T) bool {
   408  				if !(a == b) && !(c != d) {
   409  					return true
   410  				}
   411  				return false
   412  			},
   413  			cmp1Expr:    "a == b",
   414  			cmp2Expr:    "c != d",
   415  			logicalExpr: "!(a == b) && !(c != d)",
   416  		},
   417  		{
   418  			cmp1:    func(a, b T) bool { return a == b },
   419  			cmp2:    func(a, b T) bool { return a != b },
   420  			combine: func(x, y bool) bool { return (x) || (y) },
   421  			targetFunc: func(a, b, c, d T) bool {
   422  				if (a == b) || (c != d) {
   423  					return true
   424  				}
   425  				return false
   426  			},
   427  			cmp1Expr:    "a == b",
   428  			cmp2Expr:    "c != d",
   429  			logicalExpr: "(a == b) || (c != d)",
   430  		},
   431  		{
   432  			cmp1:    func(a, b T) bool { return a == b },
   433  			cmp2:    func(a, b T) bool { return a != b },
   434  			combine: func(x, y bool) bool { return (x) || !(y) },
   435  			targetFunc: func(a, b, c, d T) bool {
   436  				if (a == b) || !(c != d) {
   437  					return true
   438  				}
   439  				return false
   440  			},
   441  			cmp1Expr:    "a == b",
   442  			cmp2Expr:    "c != d",
   443  			logicalExpr: "(a == b) || !(c != d)",
   444  		},
   445  		{
   446  			cmp1:    func(a, b T) bool { return a == b },
   447  			cmp2:    func(a, b T) bool { return a != b },
   448  			combine: func(x, y bool) bool { return !(x) || (y) },
   449  			targetFunc: func(a, b, c, d T) bool {
   450  				if !(a == b) || (c != d) {
   451  					return true
   452  				}
   453  				return false
   454  			},
   455  			cmp1Expr:    "a == b",
   456  			cmp2Expr:    "c != d",
   457  			logicalExpr: "!(a == b) || (c != d)",
   458  		},
   459  		{
   460  			cmp1:    func(a, b T) bool { return a == b },
   461  			cmp2:    func(a, b T) bool { return a != b },
   462  			combine: func(x, y bool) bool { return !(x) || !(y) },
   463  			targetFunc: func(a, b, c, d T) bool {
   464  				if !(a == b) || !(c != d) {
   465  					return true
   466  				}
   467  				return false
   468  			},
   469  			cmp1Expr:    "a == b",
   470  			cmp2Expr:    "c != d",
   471  			logicalExpr: "!(a == b) || !(c != d)",
   472  		},
   473  		{
   474  			cmp1:    func(a, b T) bool { return a == b },
   475  			cmp2:    func(a, b T) bool { return a >= b },
   476  			combine: func(x, y bool) bool { return (x) && (y) },
   477  			targetFunc: func(a, b, c, d T) bool {
   478  				if (a == b) && (c >= d) {
   479  					return true
   480  				}
   481  				return false
   482  			},
   483  			cmp1Expr:    "a == b",
   484  			cmp2Expr:    "c >= d",
   485  			logicalExpr: "(a == b) && (c >= d)",
   486  		},
   487  		{
   488  			cmp1:    func(a, b T) bool { return a == b },
   489  			cmp2:    func(a, b T) bool { return a >= b },
   490  			combine: func(x, y bool) bool { return (x) && !(y) },
   491  			targetFunc: func(a, b, c, d T) bool {
   492  				if (a == b) && !(c >= d) {
   493  					return true
   494  				}
   495  				return false
   496  			},
   497  			cmp1Expr:    "a == b",
   498  			cmp2Expr:    "c >= d",
   499  			logicalExpr: "(a == b) && !(c >= d)",
   500  		},
   501  		{
   502  			cmp1:    func(a, b T) bool { return a == b },
   503  			cmp2:    func(a, b T) bool { return a >= b },
   504  			combine: func(x, y bool) bool { return !(x) && (y) },
   505  			targetFunc: func(a, b, c, d T) bool {
   506  				if !(a == b) && (c >= d) {
   507  					return true
   508  				}
   509  				return false
   510  			},
   511  			cmp1Expr:    "a == b",
   512  			cmp2Expr:    "c >= d",
   513  			logicalExpr: "!(a == b) && (c >= d)",
   514  		},
   515  		{
   516  			cmp1:    func(a, b T) bool { return a == b },
   517  			cmp2:    func(a, b T) bool { return a >= b },
   518  			combine: func(x, y bool) bool { return !(x) && !(y) },
   519  			targetFunc: func(a, b, c, d T) bool {
   520  				if !(a == b) && !(c >= d) {
   521  					return true
   522  				}
   523  				return false
   524  			},
   525  			cmp1Expr:    "a == b",
   526  			cmp2Expr:    "c >= d",
   527  			logicalExpr: "!(a == b) && !(c >= d)",
   528  		},
   529  		{
   530  			cmp1:    func(a, b T) bool { return a == b },
   531  			cmp2:    func(a, b T) bool { return a >= b },
   532  			combine: func(x, y bool) bool { return (x) || (y) },
   533  			targetFunc: func(a, b, c, d T) bool {
   534  				if (a == b) || (c >= d) {
   535  					return true
   536  				}
   537  				return false
   538  			},
   539  			cmp1Expr:    "a == b",
   540  			cmp2Expr:    "c >= d",
   541  			logicalExpr: "(a == b) || (c >= d)",
   542  		},
   543  		{
   544  			cmp1:    func(a, b T) bool { return a == b },
   545  			cmp2:    func(a, b T) bool { return a >= b },
   546  			combine: func(x, y bool) bool { return (x) || !(y) },
   547  			targetFunc: func(a, b, c, d T) bool {
   548  				if (a == b) || !(c >= d) {
   549  					return true
   550  				}
   551  				return false
   552  			},
   553  			cmp1Expr:    "a == b",
   554  			cmp2Expr:    "c >= d",
   555  			logicalExpr: "(a == b) || !(c >= d)",
   556  		},
   557  		{
   558  			cmp1:    func(a, b T) bool { return a == b },
   559  			cmp2:    func(a, b T) bool { return a >= b },
   560  			combine: func(x, y bool) bool { return !(x) || (y) },
   561  			targetFunc: func(a, b, c, d T) bool {
   562  				if !(a == b) || (c >= d) {
   563  					return true
   564  				}
   565  				return false
   566  			},
   567  			cmp1Expr:    "a == b",
   568  			cmp2Expr:    "c >= d",
   569  			logicalExpr: "!(a == b) || (c >= d)",
   570  		},
   571  		{
   572  			cmp1:    func(a, b T) bool { return a == b },
   573  			cmp2:    func(a, b T) bool { return a >= b },
   574  			combine: func(x, y bool) bool { return !(x) || !(y) },
   575  			targetFunc: func(a, b, c, d T) bool {
   576  				if !(a == b) || !(c >= d) {
   577  					return true
   578  				}
   579  				return false
   580  			},
   581  			cmp1Expr:    "a == b",
   582  			cmp2Expr:    "c >= d",
   583  			logicalExpr: "!(a == b) || !(c >= d)",
   584  		},
   585  		{
   586  			cmp1:    func(a, b T) bool { return a == b },
   587  			cmp2:    func(a, b T) bool { return a > b },
   588  			combine: func(x, y bool) bool { return (x) && (y) },
   589  			targetFunc: func(a, b, c, d T) bool {
   590  				if (a == b) && (c > d) {
   591  					return true
   592  				}
   593  				return false
   594  			},
   595  			cmp1Expr:    "a == b",
   596  			cmp2Expr:    "c > d",
   597  			logicalExpr: "(a == b) && (c > d)",
   598  		},
   599  		{
   600  			cmp1:    func(a, b T) bool { return a == b },
   601  			cmp2:    func(a, b T) bool { return a > b },
   602  			combine: func(x, y bool) bool { return (x) && !(y) },
   603  			targetFunc: func(a, b, c, d T) bool {
   604  				if (a == b) && !(c > d) {
   605  					return true
   606  				}
   607  				return false
   608  			},
   609  			cmp1Expr:    "a == b",
   610  			cmp2Expr:    "c > d",
   611  			logicalExpr: "(a == b) && !(c > d)",
   612  		},
   613  		{
   614  			cmp1:    func(a, b T) bool { return a == b },
   615  			cmp2:    func(a, b T) bool { return a > b },
   616  			combine: func(x, y bool) bool { return !(x) && (y) },
   617  			targetFunc: func(a, b, c, d T) bool {
   618  				if !(a == b) && (c > d) {
   619  					return true
   620  				}
   621  				return false
   622  			},
   623  			cmp1Expr:    "a == b",
   624  			cmp2Expr:    "c > d",
   625  			logicalExpr: "!(a == b) && (c > d)",
   626  		},
   627  		{
   628  			cmp1:    func(a, b T) bool { return a == b },
   629  			cmp2:    func(a, b T) bool { return a > b },
   630  			combine: func(x, y bool) bool { return !(x) && !(y) },
   631  			targetFunc: func(a, b, c, d T) bool {
   632  				if !(a == b) && !(c > d) {
   633  					return true
   634  				}
   635  				return false
   636  			},
   637  			cmp1Expr:    "a == b",
   638  			cmp2Expr:    "c > d",
   639  			logicalExpr: "!(a == b) && !(c > d)",
   640  		},
   641  		{
   642  			cmp1:    func(a, b T) bool { return a == b },
   643  			cmp2:    func(a, b T) bool { return a > b },
   644  			combine: func(x, y bool) bool { return (x) || (y) },
   645  			targetFunc: func(a, b, c, d T) bool {
   646  				if (a == b) || (c > d) {
   647  					return true
   648  				}
   649  				return false
   650  			},
   651  			cmp1Expr:    "a == b",
   652  			cmp2Expr:    "c > d",
   653  			logicalExpr: "(a == b) || (c > d)",
   654  		},
   655  		{
   656  			cmp1:    func(a, b T) bool { return a == b },
   657  			cmp2:    func(a, b T) bool { return a > b },
   658  			combine: func(x, y bool) bool { return (x) || !(y) },
   659  			targetFunc: func(a, b, c, d T) bool {
   660  				if (a == b) || !(c > d) {
   661  					return true
   662  				}
   663  				return false
   664  			},
   665  			cmp1Expr:    "a == b",
   666  			cmp2Expr:    "c > d",
   667  			logicalExpr: "(a == b) || !(c > d)",
   668  		},
   669  		{
   670  			cmp1:    func(a, b T) bool { return a == b },
   671  			cmp2:    func(a, b T) bool { return a > b },
   672  			combine: func(x, y bool) bool { return !(x) || (y) },
   673  			targetFunc: func(a, b, c, d T) bool {
   674  				if !(a == b) || (c > d) {
   675  					return true
   676  				}
   677  				return false
   678  			},
   679  			cmp1Expr:    "a == b",
   680  			cmp2Expr:    "c > d",
   681  			logicalExpr: "!(a == b) || (c > d)",
   682  		},
   683  		{
   684  			cmp1:    func(a, b T) bool { return a == b },
   685  			cmp2:    func(a, b T) bool { return a > b },
   686  			combine: func(x, y bool) bool { return !(x) || !(y) },
   687  			targetFunc: func(a, b, c, d T) bool {
   688  				if !(a == b) || !(c > d) {
   689  					return true
   690  				}
   691  				return false
   692  			},
   693  			cmp1Expr:    "a == b",
   694  			cmp2Expr:    "c > d",
   695  			logicalExpr: "!(a == b) || !(c > d)",
   696  		},
   697  		{
   698  			cmp1:    func(a, b T) bool { return a <= b },
   699  			cmp2:    func(a, b T) bool { return a == b },
   700  			combine: func(x, y bool) bool { return (x) && (y) },
   701  			targetFunc: func(a, b, c, d T) bool {
   702  				if (a <= b) && (c == d) {
   703  					return true
   704  				}
   705  				return false
   706  			},
   707  			cmp1Expr:    "a <= b",
   708  			cmp2Expr:    "c == d",
   709  			logicalExpr: "(a <= b) && (c == d)",
   710  		},
   711  		{
   712  			cmp1:    func(a, b T) bool { return a <= b },
   713  			cmp2:    func(a, b T) bool { return a == b },
   714  			combine: func(x, y bool) bool { return (x) && !(y) },
   715  			targetFunc: func(a, b, c, d T) bool {
   716  				if (a <= b) && !(c == d) {
   717  					return true
   718  				}
   719  				return false
   720  			},
   721  			cmp1Expr:    "a <= b",
   722  			cmp2Expr:    "c == d",
   723  			logicalExpr: "(a <= b) && !(c == d)",
   724  		},
   725  		{
   726  			cmp1:    func(a, b T) bool { return a <= b },
   727  			cmp2:    func(a, b T) bool { return a == b },
   728  			combine: func(x, y bool) bool { return !(x) && (y) },
   729  			targetFunc: func(a, b, c, d T) bool {
   730  				if !(a <= b) && (c == d) {
   731  					return true
   732  				}
   733  				return false
   734  			},
   735  			cmp1Expr:    "a <= b",
   736  			cmp2Expr:    "c == d",
   737  			logicalExpr: "!(a <= b) && (c == d)",
   738  		},
   739  		{
   740  			cmp1:    func(a, b T) bool { return a <= b },
   741  			cmp2:    func(a, b T) bool { return a == b },
   742  			combine: func(x, y bool) bool { return !(x) && !(y) },
   743  			targetFunc: func(a, b, c, d T) bool {
   744  				if !(a <= b) && !(c == d) {
   745  					return true
   746  				}
   747  				return false
   748  			},
   749  			cmp1Expr:    "a <= b",
   750  			cmp2Expr:    "c == d",
   751  			logicalExpr: "!(a <= b) && !(c == d)",
   752  		},
   753  		{
   754  			cmp1:    func(a, b T) bool { return a <= b },
   755  			cmp2:    func(a, b T) bool { return a == b },
   756  			combine: func(x, y bool) bool { return (x) || (y) },
   757  			targetFunc: func(a, b, c, d T) bool {
   758  				if (a <= b) || (c == d) {
   759  					return true
   760  				}
   761  				return false
   762  			},
   763  			cmp1Expr:    "a <= b",
   764  			cmp2Expr:    "c == d",
   765  			logicalExpr: "(a <= b) || (c == d)",
   766  		},
   767  		{
   768  			cmp1:    func(a, b T) bool { return a <= b },
   769  			cmp2:    func(a, b T) bool { return a == b },
   770  			combine: func(x, y bool) bool { return (x) || !(y) },
   771  			targetFunc: func(a, b, c, d T) bool {
   772  				if (a <= b) || !(c == d) {
   773  					return true
   774  				}
   775  				return false
   776  			},
   777  			cmp1Expr:    "a <= b",
   778  			cmp2Expr:    "c == d",
   779  			logicalExpr: "(a <= b) || !(c == d)",
   780  		},
   781  		{
   782  			cmp1:    func(a, b T) bool { return a <= b },
   783  			cmp2:    func(a, b T) bool { return a == b },
   784  			combine: func(x, y bool) bool { return !(x) || (y) },
   785  			targetFunc: func(a, b, c, d T) bool {
   786  				if !(a <= b) || (c == d) {
   787  					return true
   788  				}
   789  				return false
   790  			},
   791  			cmp1Expr:    "a <= b",
   792  			cmp2Expr:    "c == d",
   793  			logicalExpr: "!(a <= b) || (c == d)",
   794  		},
   795  		{
   796  			cmp1:    func(a, b T) bool { return a <= b },
   797  			cmp2:    func(a, b T) bool { return a == b },
   798  			combine: func(x, y bool) bool { return !(x) || !(y) },
   799  			targetFunc: func(a, b, c, d T) bool {
   800  				if !(a <= b) || !(c == d) {
   801  					return true
   802  				}
   803  				return false
   804  			},
   805  			cmp1Expr:    "a <= b",
   806  			cmp2Expr:    "c == d",
   807  			logicalExpr: "!(a <= b) || !(c == d)",
   808  		},
   809  		{
   810  			cmp1:    func(a, b T) bool { return a <= b },
   811  			cmp2:    func(a, b T) bool { return a <= b },
   812  			combine: func(x, y bool) bool { return (x) && (y) },
   813  			targetFunc: func(a, b, c, d T) bool {
   814  				if (a <= b) && (c <= d) {
   815  					return true
   816  				}
   817  				return false
   818  			},
   819  			cmp1Expr:    "a <= b",
   820  			cmp2Expr:    "c <= d",
   821  			logicalExpr: "(a <= b) && (c <= d)",
   822  		},
   823  		{
   824  			cmp1:    func(a, b T) bool { return a <= b },
   825  			cmp2:    func(a, b T) bool { return a <= b },
   826  			combine: func(x, y bool) bool { return (x) && !(y) },
   827  			targetFunc: func(a, b, c, d T) bool {
   828  				if (a <= b) && !(c <= d) {
   829  					return true
   830  				}
   831  				return false
   832  			},
   833  			cmp1Expr:    "a <= b",
   834  			cmp2Expr:    "c <= d",
   835  			logicalExpr: "(a <= b) && !(c <= d)",
   836  		},
   837  		{
   838  			cmp1:    func(a, b T) bool { return a <= b },
   839  			cmp2:    func(a, b T) bool { return a <= b },
   840  			combine: func(x, y bool) bool { return !(x) && (y) },
   841  			targetFunc: func(a, b, c, d T) bool {
   842  				if !(a <= b) && (c <= d) {
   843  					return true
   844  				}
   845  				return false
   846  			},
   847  			cmp1Expr:    "a <= b",
   848  			cmp2Expr:    "c <= d",
   849  			logicalExpr: "!(a <= b) && (c <= d)",
   850  		},
   851  		{
   852  			cmp1:    func(a, b T) bool { return a <= b },
   853  			cmp2:    func(a, b T) bool { return a <= b },
   854  			combine: func(x, y bool) bool { return !(x) && !(y) },
   855  			targetFunc: func(a, b, c, d T) bool {
   856  				if !(a <= b) && !(c <= d) {
   857  					return true
   858  				}
   859  				return false
   860  			},
   861  			cmp1Expr:    "a <= b",
   862  			cmp2Expr:    "c <= d",
   863  			logicalExpr: "!(a <= b) && !(c <= d)",
   864  		},
   865  		{
   866  			cmp1:    func(a, b T) bool { return a <= b },
   867  			cmp2:    func(a, b T) bool { return a <= b },
   868  			combine: func(x, y bool) bool { return (x) || (y) },
   869  			targetFunc: func(a, b, c, d T) bool {
   870  				if (a <= b) || (c <= d) {
   871  					return true
   872  				}
   873  				return false
   874  			},
   875  			cmp1Expr:    "a <= b",
   876  			cmp2Expr:    "c <= d",
   877  			logicalExpr: "(a <= b) || (c <= d)",
   878  		},
   879  		{
   880  			cmp1:    func(a, b T) bool { return a <= b },
   881  			cmp2:    func(a, b T) bool { return a <= b },
   882  			combine: func(x, y bool) bool { return (x) || !(y) },
   883  			targetFunc: func(a, b, c, d T) bool {
   884  				if (a <= b) || !(c <= d) {
   885  					return true
   886  				}
   887  				return false
   888  			},
   889  			cmp1Expr:    "a <= b",
   890  			cmp2Expr:    "c <= d",
   891  			logicalExpr: "(a <= b) || !(c <= d)",
   892  		},
   893  		{
   894  			cmp1:    func(a, b T) bool { return a <= b },
   895  			cmp2:    func(a, b T) bool { return a <= b },
   896  			combine: func(x, y bool) bool { return !(x) || (y) },
   897  			targetFunc: func(a, b, c, d T) bool {
   898  				if !(a <= b) || (c <= d) {
   899  					return true
   900  				}
   901  				return false
   902  			},
   903  			cmp1Expr:    "a <= b",
   904  			cmp2Expr:    "c <= d",
   905  			logicalExpr: "!(a <= b) || (c <= d)",
   906  		},
   907  		{
   908  			cmp1:    func(a, b T) bool { return a <= b },
   909  			cmp2:    func(a, b T) bool { return a <= b },
   910  			combine: func(x, y bool) bool { return !(x) || !(y) },
   911  			targetFunc: func(a, b, c, d T) bool {
   912  				if !(a <= b) || !(c <= d) {
   913  					return true
   914  				}
   915  				return false
   916  			},
   917  			cmp1Expr:    "a <= b",
   918  			cmp2Expr:    "c <= d",
   919  			logicalExpr: "!(a <= b) || !(c <= d)",
   920  		},
   921  		{
   922  			cmp1:    func(a, b T) bool { return a <= b },
   923  			cmp2:    func(a, b T) bool { return a < b },
   924  			combine: func(x, y bool) bool { return (x) && (y) },
   925  			targetFunc: func(a, b, c, d T) bool {
   926  				if (a <= b) && (c < d) {
   927  					return true
   928  				}
   929  				return false
   930  			},
   931  			cmp1Expr:    "a <= b",
   932  			cmp2Expr:    "c < d",
   933  			logicalExpr: "(a <= b) && (c < d)",
   934  		},
   935  		{
   936  			cmp1:    func(a, b T) bool { return a <= b },
   937  			cmp2:    func(a, b T) bool { return a < b },
   938  			combine: func(x, y bool) bool { return (x) && !(y) },
   939  			targetFunc: func(a, b, c, d T) bool {
   940  				if (a <= b) && !(c < d) {
   941  					return true
   942  				}
   943  				return false
   944  			},
   945  			cmp1Expr:    "a <= b",
   946  			cmp2Expr:    "c < d",
   947  			logicalExpr: "(a <= b) && !(c < d)",
   948  		},
   949  		{
   950  			cmp1:    func(a, b T) bool { return a <= b },
   951  			cmp2:    func(a, b T) bool { return a < b },
   952  			combine: func(x, y bool) bool { return !(x) && (y) },
   953  			targetFunc: func(a, b, c, d T) bool {
   954  				if !(a <= b) && (c < d) {
   955  					return true
   956  				}
   957  				return false
   958  			},
   959  			cmp1Expr:    "a <= b",
   960  			cmp2Expr:    "c < d",
   961  			logicalExpr: "!(a <= b) && (c < d)",
   962  		},
   963  		{
   964  			cmp1:    func(a, b T) bool { return a <= b },
   965  			cmp2:    func(a, b T) bool { return a < b },
   966  			combine: func(x, y bool) bool { return !(x) && !(y) },
   967  			targetFunc: func(a, b, c, d T) bool {
   968  				if !(a <= b) && !(c < d) {
   969  					return true
   970  				}
   971  				return false
   972  			},
   973  			cmp1Expr:    "a <= b",
   974  			cmp2Expr:    "c < d",
   975  			logicalExpr: "!(a <= b) && !(c < d)",
   976  		},
   977  		{
   978  			cmp1:    func(a, b T) bool { return a <= b },
   979  			cmp2:    func(a, b T) bool { return a < b },
   980  			combine: func(x, y bool) bool { return (x) || (y) },
   981  			targetFunc: func(a, b, c, d T) bool {
   982  				if (a <= b) || (c < d) {
   983  					return true
   984  				}
   985  				return false
   986  			},
   987  			cmp1Expr:    "a <= b",
   988  			cmp2Expr:    "c < d",
   989  			logicalExpr: "(a <= b) || (c < d)",
   990  		},
   991  		{
   992  			cmp1:    func(a, b T) bool { return a <= b },
   993  			cmp2:    func(a, b T) bool { return a < b },
   994  			combine: func(x, y bool) bool { return (x) || !(y) },
   995  			targetFunc: func(a, b, c, d T) bool {
   996  				if (a <= b) || !(c < d) {
   997  					return true
   998  				}
   999  				return false
  1000  			},
  1001  			cmp1Expr:    "a <= b",
  1002  			cmp2Expr:    "c < d",
  1003  			logicalExpr: "(a <= b) || !(c < d)",
  1004  		},
  1005  		{
  1006  			cmp1:    func(a, b T) bool { return a <= b },
  1007  			cmp2:    func(a, b T) bool { return a < b },
  1008  			combine: func(x, y bool) bool { return !(x) || (y) },
  1009  			targetFunc: func(a, b, c, d T) bool {
  1010  				if !(a <= b) || (c < d) {
  1011  					return true
  1012  				}
  1013  				return false
  1014  			},
  1015  			cmp1Expr:    "a <= b",
  1016  			cmp2Expr:    "c < d",
  1017  			logicalExpr: "!(a <= b) || (c < d)",
  1018  		},
  1019  		{
  1020  			cmp1:    func(a, b T) bool { return a <= b },
  1021  			cmp2:    func(a, b T) bool { return a < b },
  1022  			combine: func(x, y bool) bool { return !(x) || !(y) },
  1023  			targetFunc: func(a, b, c, d T) bool {
  1024  				if !(a <= b) || !(c < d) {
  1025  					return true
  1026  				}
  1027  				return false
  1028  			},
  1029  			cmp1Expr:    "a <= b",
  1030  			cmp2Expr:    "c < d",
  1031  			logicalExpr: "!(a <= b) || !(c < d)",
  1032  		},
  1033  		{
  1034  			cmp1:    func(a, b T) bool { return a <= b },
  1035  			cmp2:    func(a, b T) bool { return a != b },
  1036  			combine: func(x, y bool) bool { return (x) && (y) },
  1037  			targetFunc: func(a, b, c, d T) bool {
  1038  				if (a <= b) && (c != d) {
  1039  					return true
  1040  				}
  1041  				return false
  1042  			},
  1043  			cmp1Expr:    "a <= b",
  1044  			cmp2Expr:    "c != d",
  1045  			logicalExpr: "(a <= b) && (c != d)",
  1046  		},
  1047  		{
  1048  			cmp1:    func(a, b T) bool { return a <= b },
  1049  			cmp2:    func(a, b T) bool { return a != b },
  1050  			combine: func(x, y bool) bool { return (x) && !(y) },
  1051  			targetFunc: func(a, b, c, d T) bool {
  1052  				if (a <= b) && !(c != d) {
  1053  					return true
  1054  				}
  1055  				return false
  1056  			},
  1057  			cmp1Expr:    "a <= b",
  1058  			cmp2Expr:    "c != d",
  1059  			logicalExpr: "(a <= b) && !(c != d)",
  1060  		},
  1061  		{
  1062  			cmp1:    func(a, b T) bool { return a <= b },
  1063  			cmp2:    func(a, b T) bool { return a != b },
  1064  			combine: func(x, y bool) bool { return !(x) && (y) },
  1065  			targetFunc: func(a, b, c, d T) bool {
  1066  				if !(a <= b) && (c != d) {
  1067  					return true
  1068  				}
  1069  				return false
  1070  			},
  1071  			cmp1Expr:    "a <= b",
  1072  			cmp2Expr:    "c != d",
  1073  			logicalExpr: "!(a <= b) && (c != d)",
  1074  		},
  1075  		{
  1076  			cmp1:    func(a, b T) bool { return a <= b },
  1077  			cmp2:    func(a, b T) bool { return a != b },
  1078  			combine: func(x, y bool) bool { return !(x) && !(y) },
  1079  			targetFunc: func(a, b, c, d T) bool {
  1080  				if !(a <= b) && !(c != d) {
  1081  					return true
  1082  				}
  1083  				return false
  1084  			},
  1085  			cmp1Expr:    "a <= b",
  1086  			cmp2Expr:    "c != d",
  1087  			logicalExpr: "!(a <= b) && !(c != d)",
  1088  		},
  1089  		{
  1090  			cmp1:    func(a, b T) bool { return a <= b },
  1091  			cmp2:    func(a, b T) bool { return a != b },
  1092  			combine: func(x, y bool) bool { return (x) || (y) },
  1093  			targetFunc: func(a, b, c, d T) bool {
  1094  				if (a <= b) || (c != d) {
  1095  					return true
  1096  				}
  1097  				return false
  1098  			},
  1099  			cmp1Expr:    "a <= b",
  1100  			cmp2Expr:    "c != d",
  1101  			logicalExpr: "(a <= b) || (c != d)",
  1102  		},
  1103  		{
  1104  			cmp1:    func(a, b T) bool { return a <= b },
  1105  			cmp2:    func(a, b T) bool { return a != b },
  1106  			combine: func(x, y bool) bool { return (x) || !(y) },
  1107  			targetFunc: func(a, b, c, d T) bool {
  1108  				if (a <= b) || !(c != d) {
  1109  					return true
  1110  				}
  1111  				return false
  1112  			},
  1113  			cmp1Expr:    "a <= b",
  1114  			cmp2Expr:    "c != d",
  1115  			logicalExpr: "(a <= b) || !(c != d)",
  1116  		},
  1117  		{
  1118  			cmp1:    func(a, b T) bool { return a <= b },
  1119  			cmp2:    func(a, b T) bool { return a != b },
  1120  			combine: func(x, y bool) bool { return !(x) || (y) },
  1121  			targetFunc: func(a, b, c, d T) bool {
  1122  				if !(a <= b) || (c != d) {
  1123  					return true
  1124  				}
  1125  				return false
  1126  			},
  1127  			cmp1Expr:    "a <= b",
  1128  			cmp2Expr:    "c != d",
  1129  			logicalExpr: "!(a <= b) || (c != d)",
  1130  		},
  1131  		{
  1132  			cmp1:    func(a, b T) bool { return a <= b },
  1133  			cmp2:    func(a, b T) bool { return a != b },
  1134  			combine: func(x, y bool) bool { return !(x) || !(y) },
  1135  			targetFunc: func(a, b, c, d T) bool {
  1136  				if !(a <= b) || !(c != d) {
  1137  					return true
  1138  				}
  1139  				return false
  1140  			},
  1141  			cmp1Expr:    "a <= b",
  1142  			cmp2Expr:    "c != d",
  1143  			logicalExpr: "!(a <= b) || !(c != d)",
  1144  		},
  1145  		{
  1146  			cmp1:    func(a, b T) bool { return a <= b },
  1147  			cmp2:    func(a, b T) bool { return a >= b },
  1148  			combine: func(x, y bool) bool { return (x) && (y) },
  1149  			targetFunc: func(a, b, c, d T) bool {
  1150  				if (a <= b) && (c >= d) {
  1151  					return true
  1152  				}
  1153  				return false
  1154  			},
  1155  			cmp1Expr:    "a <= b",
  1156  			cmp2Expr:    "c >= d",
  1157  			logicalExpr: "(a <= b) && (c >= d)",
  1158  		},
  1159  		{
  1160  			cmp1:    func(a, b T) bool { return a <= b },
  1161  			cmp2:    func(a, b T) bool { return a >= b },
  1162  			combine: func(x, y bool) bool { return (x) && !(y) },
  1163  			targetFunc: func(a, b, c, d T) bool {
  1164  				if (a <= b) && !(c >= d) {
  1165  					return true
  1166  				}
  1167  				return false
  1168  			},
  1169  			cmp1Expr:    "a <= b",
  1170  			cmp2Expr:    "c >= d",
  1171  			logicalExpr: "(a <= b) && !(c >= d)",
  1172  		},
  1173  		{
  1174  			cmp1:    func(a, b T) bool { return a <= b },
  1175  			cmp2:    func(a, b T) bool { return a >= b },
  1176  			combine: func(x, y bool) bool { return !(x) && (y) },
  1177  			targetFunc: func(a, b, c, d T) bool {
  1178  				if !(a <= b) && (c >= d) {
  1179  					return true
  1180  				}
  1181  				return false
  1182  			},
  1183  			cmp1Expr:    "a <= b",
  1184  			cmp2Expr:    "c >= d",
  1185  			logicalExpr: "!(a <= b) && (c >= d)",
  1186  		},
  1187  		{
  1188  			cmp1:    func(a, b T) bool { return a <= b },
  1189  			cmp2:    func(a, b T) bool { return a >= b },
  1190  			combine: func(x, y bool) bool { return !(x) && !(y) },
  1191  			targetFunc: func(a, b, c, d T) bool {
  1192  				if !(a <= b) && !(c >= d) {
  1193  					return true
  1194  				}
  1195  				return false
  1196  			},
  1197  			cmp1Expr:    "a <= b",
  1198  			cmp2Expr:    "c >= d",
  1199  			logicalExpr: "!(a <= b) && !(c >= d)",
  1200  		},
  1201  		{
  1202  			cmp1:    func(a, b T) bool { return a <= b },
  1203  			cmp2:    func(a, b T) bool { return a >= b },
  1204  			combine: func(x, y bool) bool { return (x) || (y) },
  1205  			targetFunc: func(a, b, c, d T) bool {
  1206  				if (a <= b) || (c >= d) {
  1207  					return true
  1208  				}
  1209  				return false
  1210  			},
  1211  			cmp1Expr:    "a <= b",
  1212  			cmp2Expr:    "c >= d",
  1213  			logicalExpr: "(a <= b) || (c >= d)",
  1214  		},
  1215  		{
  1216  			cmp1:    func(a, b T) bool { return a <= b },
  1217  			cmp2:    func(a, b T) bool { return a >= b },
  1218  			combine: func(x, y bool) bool { return (x) || !(y) },
  1219  			targetFunc: func(a, b, c, d T) bool {
  1220  				if (a <= b) || !(c >= d) {
  1221  					return true
  1222  				}
  1223  				return false
  1224  			},
  1225  			cmp1Expr:    "a <= b",
  1226  			cmp2Expr:    "c >= d",
  1227  			logicalExpr: "(a <= b) || !(c >= d)",
  1228  		},
  1229  		{
  1230  			cmp1:    func(a, b T) bool { return a <= b },
  1231  			cmp2:    func(a, b T) bool { return a >= b },
  1232  			combine: func(x, y bool) bool { return !(x) || (y) },
  1233  			targetFunc: func(a, b, c, d T) bool {
  1234  				if !(a <= b) || (c >= d) {
  1235  					return true
  1236  				}
  1237  				return false
  1238  			},
  1239  			cmp1Expr:    "a <= b",
  1240  			cmp2Expr:    "c >= d",
  1241  			logicalExpr: "!(a <= b) || (c >= d)",
  1242  		},
  1243  		{
  1244  			cmp1:    func(a, b T) bool { return a <= b },
  1245  			cmp2:    func(a, b T) bool { return a >= b },
  1246  			combine: func(x, y bool) bool { return !(x) || !(y) },
  1247  			targetFunc: func(a, b, c, d T) bool {
  1248  				if !(a <= b) || !(c >= d) {
  1249  					return true
  1250  				}
  1251  				return false
  1252  			},
  1253  			cmp1Expr:    "a <= b",
  1254  			cmp2Expr:    "c >= d",
  1255  			logicalExpr: "!(a <= b) || !(c >= d)",
  1256  		},
  1257  		{
  1258  			cmp1:    func(a, b T) bool { return a <= b },
  1259  			cmp2:    func(a, b T) bool { return a > b },
  1260  			combine: func(x, y bool) bool { return (x) && (y) },
  1261  			targetFunc: func(a, b, c, d T) bool {
  1262  				if (a <= b) && (c > d) {
  1263  					return true
  1264  				}
  1265  				return false
  1266  			},
  1267  			cmp1Expr:    "a <= b",
  1268  			cmp2Expr:    "c > d",
  1269  			logicalExpr: "(a <= b) && (c > d)",
  1270  		},
  1271  		{
  1272  			cmp1:    func(a, b T) bool { return a <= b },
  1273  			cmp2:    func(a, b T) bool { return a > b },
  1274  			combine: func(x, y bool) bool { return (x) && !(y) },
  1275  			targetFunc: func(a, b, c, d T) bool {
  1276  				if (a <= b) && !(c > d) {
  1277  					return true
  1278  				}
  1279  				return false
  1280  			},
  1281  			cmp1Expr:    "a <= b",
  1282  			cmp2Expr:    "c > d",
  1283  			logicalExpr: "(a <= b) && !(c > d)",
  1284  		},
  1285  		{
  1286  			cmp1:    func(a, b T) bool { return a <= b },
  1287  			cmp2:    func(a, b T) bool { return a > b },
  1288  			combine: func(x, y bool) bool { return !(x) && (y) },
  1289  			targetFunc: func(a, b, c, d T) bool {
  1290  				if !(a <= b) && (c > d) {
  1291  					return true
  1292  				}
  1293  				return false
  1294  			},
  1295  			cmp1Expr:    "a <= b",
  1296  			cmp2Expr:    "c > d",
  1297  			logicalExpr: "!(a <= b) && (c > d)",
  1298  		},
  1299  		{
  1300  			cmp1:    func(a, b T) bool { return a <= b },
  1301  			cmp2:    func(a, b T) bool { return a > b },
  1302  			combine: func(x, y bool) bool { return !(x) && !(y) },
  1303  			targetFunc: func(a, b, c, d T) bool {
  1304  				if !(a <= b) && !(c > d) {
  1305  					return true
  1306  				}
  1307  				return false
  1308  			},
  1309  			cmp1Expr:    "a <= b",
  1310  			cmp2Expr:    "c > d",
  1311  			logicalExpr: "!(a <= b) && !(c > d)",
  1312  		},
  1313  		{
  1314  			cmp1:    func(a, b T) bool { return a <= b },
  1315  			cmp2:    func(a, b T) bool { return a > b },
  1316  			combine: func(x, y bool) bool { return (x) || (y) },
  1317  			targetFunc: func(a, b, c, d T) bool {
  1318  				if (a <= b) || (c > d) {
  1319  					return true
  1320  				}
  1321  				return false
  1322  			},
  1323  			cmp1Expr:    "a <= b",
  1324  			cmp2Expr:    "c > d",
  1325  			logicalExpr: "(a <= b) || (c > d)",
  1326  		},
  1327  		{
  1328  			cmp1:    func(a, b T) bool { return a <= b },
  1329  			cmp2:    func(a, b T) bool { return a > b },
  1330  			combine: func(x, y bool) bool { return (x) || !(y) },
  1331  			targetFunc: func(a, b, c, d T) bool {
  1332  				if (a <= b) || !(c > d) {
  1333  					return true
  1334  				}
  1335  				return false
  1336  			},
  1337  			cmp1Expr:    "a <= b",
  1338  			cmp2Expr:    "c > d",
  1339  			logicalExpr: "(a <= b) || !(c > d)",
  1340  		},
  1341  		{
  1342  			cmp1:    func(a, b T) bool { return a <= b },
  1343  			cmp2:    func(a, b T) bool { return a > b },
  1344  			combine: func(x, y bool) bool { return !(x) || (y) },
  1345  			targetFunc: func(a, b, c, d T) bool {
  1346  				if !(a <= b) || (c > d) {
  1347  					return true
  1348  				}
  1349  				return false
  1350  			},
  1351  			cmp1Expr:    "a <= b",
  1352  			cmp2Expr:    "c > d",
  1353  			logicalExpr: "!(a <= b) || (c > d)",
  1354  		},
  1355  		{
  1356  			cmp1:    func(a, b T) bool { return a <= b },
  1357  			cmp2:    func(a, b T) bool { return a > b },
  1358  			combine: func(x, y bool) bool { return !(x) || !(y) },
  1359  			targetFunc: func(a, b, c, d T) bool {
  1360  				if !(a <= b) || !(c > d) {
  1361  					return true
  1362  				}
  1363  				return false
  1364  			},
  1365  			cmp1Expr:    "a <= b",
  1366  			cmp2Expr:    "c > d",
  1367  			logicalExpr: "!(a <= b) || !(c > d)",
  1368  		},
  1369  		{
  1370  			cmp1:    func(a, b T) bool { return a < b },
  1371  			cmp2:    func(a, b T) bool { return a == b },
  1372  			combine: func(x, y bool) bool { return (x) && (y) },
  1373  			targetFunc: func(a, b, c, d T) bool {
  1374  				if (a < b) && (c == d) {
  1375  					return true
  1376  				}
  1377  				return false
  1378  			},
  1379  			cmp1Expr:    "a < b",
  1380  			cmp2Expr:    "c == d",
  1381  			logicalExpr: "(a < b) && (c == d)",
  1382  		},
  1383  		{
  1384  			cmp1:    func(a, b T) bool { return a < b },
  1385  			cmp2:    func(a, b T) bool { return a == b },
  1386  			combine: func(x, y bool) bool { return (x) && !(y) },
  1387  			targetFunc: func(a, b, c, d T) bool {
  1388  				if (a < b) && !(c == d) {
  1389  					return true
  1390  				}
  1391  				return false
  1392  			},
  1393  			cmp1Expr:    "a < b",
  1394  			cmp2Expr:    "c == d",
  1395  			logicalExpr: "(a < b) && !(c == d)",
  1396  		},
  1397  		{
  1398  			cmp1:    func(a, b T) bool { return a < b },
  1399  			cmp2:    func(a, b T) bool { return a == b },
  1400  			combine: func(x, y bool) bool { return !(x) && (y) },
  1401  			targetFunc: func(a, b, c, d T) bool {
  1402  				if !(a < b) && (c == d) {
  1403  					return true
  1404  				}
  1405  				return false
  1406  			},
  1407  			cmp1Expr:    "a < b",
  1408  			cmp2Expr:    "c == d",
  1409  			logicalExpr: "!(a < b) && (c == d)",
  1410  		},
  1411  		{
  1412  			cmp1:    func(a, b T) bool { return a < b },
  1413  			cmp2:    func(a, b T) bool { return a == b },
  1414  			combine: func(x, y bool) bool { return !(x) && !(y) },
  1415  			targetFunc: func(a, b, c, d T) bool {
  1416  				if !(a < b) && !(c == d) {
  1417  					return true
  1418  				}
  1419  				return false
  1420  			},
  1421  			cmp1Expr:    "a < b",
  1422  			cmp2Expr:    "c == d",
  1423  			logicalExpr: "!(a < b) && !(c == d)",
  1424  		},
  1425  		{
  1426  			cmp1:    func(a, b T) bool { return a < b },
  1427  			cmp2:    func(a, b T) bool { return a == b },
  1428  			combine: func(x, y bool) bool { return (x) || (y) },
  1429  			targetFunc: func(a, b, c, d T) bool {
  1430  				if (a < b) || (c == d) {
  1431  					return true
  1432  				}
  1433  				return false
  1434  			},
  1435  			cmp1Expr:    "a < b",
  1436  			cmp2Expr:    "c == d",
  1437  			logicalExpr: "(a < b) || (c == d)",
  1438  		},
  1439  		{
  1440  			cmp1:    func(a, b T) bool { return a < b },
  1441  			cmp2:    func(a, b T) bool { return a == b },
  1442  			combine: func(x, y bool) bool { return (x) || !(y) },
  1443  			targetFunc: func(a, b, c, d T) bool {
  1444  				if (a < b) || !(c == d) {
  1445  					return true
  1446  				}
  1447  				return false
  1448  			},
  1449  			cmp1Expr:    "a < b",
  1450  			cmp2Expr:    "c == d",
  1451  			logicalExpr: "(a < b) || !(c == d)",
  1452  		},
  1453  		{
  1454  			cmp1:    func(a, b T) bool { return a < b },
  1455  			cmp2:    func(a, b T) bool { return a == b },
  1456  			combine: func(x, y bool) bool { return !(x) || (y) },
  1457  			targetFunc: func(a, b, c, d T) bool {
  1458  				if !(a < b) || (c == d) {
  1459  					return true
  1460  				}
  1461  				return false
  1462  			},
  1463  			cmp1Expr:    "a < b",
  1464  			cmp2Expr:    "c == d",
  1465  			logicalExpr: "!(a < b) || (c == d)",
  1466  		},
  1467  		{
  1468  			cmp1:    func(a, b T) bool { return a < b },
  1469  			cmp2:    func(a, b T) bool { return a == b },
  1470  			combine: func(x, y bool) bool { return !(x) || !(y) },
  1471  			targetFunc: func(a, b, c, d T) bool {
  1472  				if !(a < b) || !(c == d) {
  1473  					return true
  1474  				}
  1475  				return false
  1476  			},
  1477  			cmp1Expr:    "a < b",
  1478  			cmp2Expr:    "c == d",
  1479  			logicalExpr: "!(a < b) || !(c == d)",
  1480  		},
  1481  		{
  1482  			cmp1:    func(a, b T) bool { return a < b },
  1483  			cmp2:    func(a, b T) bool { return a <= b },
  1484  			combine: func(x, y bool) bool { return (x) && (y) },
  1485  			targetFunc: func(a, b, c, d T) bool {
  1486  				if (a < b) && (c <= d) {
  1487  					return true
  1488  				}
  1489  				return false
  1490  			},
  1491  			cmp1Expr:    "a < b",
  1492  			cmp2Expr:    "c <= d",
  1493  			logicalExpr: "(a < b) && (c <= d)",
  1494  		},
  1495  		{
  1496  			cmp1:    func(a, b T) bool { return a < b },
  1497  			cmp2:    func(a, b T) bool { return a <= b },
  1498  			combine: func(x, y bool) bool { return (x) && !(y) },
  1499  			targetFunc: func(a, b, c, d T) bool {
  1500  				if (a < b) && !(c <= d) {
  1501  					return true
  1502  				}
  1503  				return false
  1504  			},
  1505  			cmp1Expr:    "a < b",
  1506  			cmp2Expr:    "c <= d",
  1507  			logicalExpr: "(a < b) && !(c <= d)",
  1508  		},
  1509  		{
  1510  			cmp1:    func(a, b T) bool { return a < b },
  1511  			cmp2:    func(a, b T) bool { return a <= b },
  1512  			combine: func(x, y bool) bool { return !(x) && (y) },
  1513  			targetFunc: func(a, b, c, d T) bool {
  1514  				if !(a < b) && (c <= d) {
  1515  					return true
  1516  				}
  1517  				return false
  1518  			},
  1519  			cmp1Expr:    "a < b",
  1520  			cmp2Expr:    "c <= d",
  1521  			logicalExpr: "!(a < b) && (c <= d)",
  1522  		},
  1523  		{
  1524  			cmp1:    func(a, b T) bool { return a < b },
  1525  			cmp2:    func(a, b T) bool { return a <= b },
  1526  			combine: func(x, y bool) bool { return !(x) && !(y) },
  1527  			targetFunc: func(a, b, c, d T) bool {
  1528  				if !(a < b) && !(c <= d) {
  1529  					return true
  1530  				}
  1531  				return false
  1532  			},
  1533  			cmp1Expr:    "a < b",
  1534  			cmp2Expr:    "c <= d",
  1535  			logicalExpr: "!(a < b) && !(c <= d)",
  1536  		},
  1537  		{
  1538  			cmp1:    func(a, b T) bool { return a < b },
  1539  			cmp2:    func(a, b T) bool { return a <= b },
  1540  			combine: func(x, y bool) bool { return (x) || (y) },
  1541  			targetFunc: func(a, b, c, d T) bool {
  1542  				if (a < b) || (c <= d) {
  1543  					return true
  1544  				}
  1545  				return false
  1546  			},
  1547  			cmp1Expr:    "a < b",
  1548  			cmp2Expr:    "c <= d",
  1549  			logicalExpr: "(a < b) || (c <= d)",
  1550  		},
  1551  		{
  1552  			cmp1:    func(a, b T) bool { return a < b },
  1553  			cmp2:    func(a, b T) bool { return a <= b },
  1554  			combine: func(x, y bool) bool { return (x) || !(y) },
  1555  			targetFunc: func(a, b, c, d T) bool {
  1556  				if (a < b) || !(c <= d) {
  1557  					return true
  1558  				}
  1559  				return false
  1560  			},
  1561  			cmp1Expr:    "a < b",
  1562  			cmp2Expr:    "c <= d",
  1563  			logicalExpr: "(a < b) || !(c <= d)",
  1564  		},
  1565  		{
  1566  			cmp1:    func(a, b T) bool { return a < b },
  1567  			cmp2:    func(a, b T) bool { return a <= b },
  1568  			combine: func(x, y bool) bool { return !(x) || (y) },
  1569  			targetFunc: func(a, b, c, d T) bool {
  1570  				if !(a < b) || (c <= d) {
  1571  					return true
  1572  				}
  1573  				return false
  1574  			},
  1575  			cmp1Expr:    "a < b",
  1576  			cmp2Expr:    "c <= d",
  1577  			logicalExpr: "!(a < b) || (c <= d)",
  1578  		},
  1579  		{
  1580  			cmp1:    func(a, b T) bool { return a < b },
  1581  			cmp2:    func(a, b T) bool { return a <= b },
  1582  			combine: func(x, y bool) bool { return !(x) || !(y) },
  1583  			targetFunc: func(a, b, c, d T) bool {
  1584  				if !(a < b) || !(c <= d) {
  1585  					return true
  1586  				}
  1587  				return false
  1588  			},
  1589  			cmp1Expr:    "a < b",
  1590  			cmp2Expr:    "c <= d",
  1591  			logicalExpr: "!(a < b) || !(c <= d)",
  1592  		},
  1593  		{
  1594  			cmp1:    func(a, b T) bool { return a < b },
  1595  			cmp2:    func(a, b T) bool { return a < b },
  1596  			combine: func(x, y bool) bool { return (x) && (y) },
  1597  			targetFunc: func(a, b, c, d T) bool {
  1598  				if (a < b) && (c < d) {
  1599  					return true
  1600  				}
  1601  				return false
  1602  			},
  1603  			cmp1Expr:    "a < b",
  1604  			cmp2Expr:    "c < d",
  1605  			logicalExpr: "(a < b) && (c < d)",
  1606  		},
  1607  		{
  1608  			cmp1:    func(a, b T) bool { return a < b },
  1609  			cmp2:    func(a, b T) bool { return a < b },
  1610  			combine: func(x, y bool) bool { return (x) && !(y) },
  1611  			targetFunc: func(a, b, c, d T) bool {
  1612  				if (a < b) && !(c < d) {
  1613  					return true
  1614  				}
  1615  				return false
  1616  			},
  1617  			cmp1Expr:    "a < b",
  1618  			cmp2Expr:    "c < d",
  1619  			logicalExpr: "(a < b) && !(c < d)",
  1620  		},
  1621  		{
  1622  			cmp1:    func(a, b T) bool { return a < b },
  1623  			cmp2:    func(a, b T) bool { return a < b },
  1624  			combine: func(x, y bool) bool { return !(x) && (y) },
  1625  			targetFunc: func(a, b, c, d T) bool {
  1626  				if !(a < b) && (c < d) {
  1627  					return true
  1628  				}
  1629  				return false
  1630  			},
  1631  			cmp1Expr:    "a < b",
  1632  			cmp2Expr:    "c < d",
  1633  			logicalExpr: "!(a < b) && (c < d)",
  1634  		},
  1635  		{
  1636  			cmp1:    func(a, b T) bool { return a < b },
  1637  			cmp2:    func(a, b T) bool { return a < b },
  1638  			combine: func(x, y bool) bool { return !(x) && !(y) },
  1639  			targetFunc: func(a, b, c, d T) bool {
  1640  				if !(a < b) && !(c < d) {
  1641  					return true
  1642  				}
  1643  				return false
  1644  			},
  1645  			cmp1Expr:    "a < b",
  1646  			cmp2Expr:    "c < d",
  1647  			logicalExpr: "!(a < b) && !(c < d)",
  1648  		},
  1649  		{
  1650  			cmp1:    func(a, b T) bool { return a < b },
  1651  			cmp2:    func(a, b T) bool { return a < b },
  1652  			combine: func(x, y bool) bool { return (x) || (y) },
  1653  			targetFunc: func(a, b, c, d T) bool {
  1654  				if (a < b) || (c < d) {
  1655  					return true
  1656  				}
  1657  				return false
  1658  			},
  1659  			cmp1Expr:    "a < b",
  1660  			cmp2Expr:    "c < d",
  1661  			logicalExpr: "(a < b) || (c < d)",
  1662  		},
  1663  		{
  1664  			cmp1:    func(a, b T) bool { return a < b },
  1665  			cmp2:    func(a, b T) bool { return a < b },
  1666  			combine: func(x, y bool) bool { return (x) || !(y) },
  1667  			targetFunc: func(a, b, c, d T) bool {
  1668  				if (a < b) || !(c < d) {
  1669  					return true
  1670  				}
  1671  				return false
  1672  			},
  1673  			cmp1Expr:    "a < b",
  1674  			cmp2Expr:    "c < d",
  1675  			logicalExpr: "(a < b) || !(c < d)",
  1676  		},
  1677  		{
  1678  			cmp1:    func(a, b T) bool { return a < b },
  1679  			cmp2:    func(a, b T) bool { return a < b },
  1680  			combine: func(x, y bool) bool { return !(x) || (y) },
  1681  			targetFunc: func(a, b, c, d T) bool {
  1682  				if !(a < b) || (c < d) {
  1683  					return true
  1684  				}
  1685  				return false
  1686  			},
  1687  			cmp1Expr:    "a < b",
  1688  			cmp2Expr:    "c < d",
  1689  			logicalExpr: "!(a < b) || (c < d)",
  1690  		},
  1691  		{
  1692  			cmp1:    func(a, b T) bool { return a < b },
  1693  			cmp2:    func(a, b T) bool { return a < b },
  1694  			combine: func(x, y bool) bool { return !(x) || !(y) },
  1695  			targetFunc: func(a, b, c, d T) bool {
  1696  				if !(a < b) || !(c < d) {
  1697  					return true
  1698  				}
  1699  				return false
  1700  			},
  1701  			cmp1Expr:    "a < b",
  1702  			cmp2Expr:    "c < d",
  1703  			logicalExpr: "!(a < b) || !(c < d)",
  1704  		},
  1705  		{
  1706  			cmp1:    func(a, b T) bool { return a < b },
  1707  			cmp2:    func(a, b T) bool { return a != b },
  1708  			combine: func(x, y bool) bool { return (x) && (y) },
  1709  			targetFunc: func(a, b, c, d T) bool {
  1710  				if (a < b) && (c != d) {
  1711  					return true
  1712  				}
  1713  				return false
  1714  			},
  1715  			cmp1Expr:    "a < b",
  1716  			cmp2Expr:    "c != d",
  1717  			logicalExpr: "(a < b) && (c != d)",
  1718  		},
  1719  		{
  1720  			cmp1:    func(a, b T) bool { return a < b },
  1721  			cmp2:    func(a, b T) bool { return a != b },
  1722  			combine: func(x, y bool) bool { return (x) && !(y) },
  1723  			targetFunc: func(a, b, c, d T) bool {
  1724  				if (a < b) && !(c != d) {
  1725  					return true
  1726  				}
  1727  				return false
  1728  			},
  1729  			cmp1Expr:    "a < b",
  1730  			cmp2Expr:    "c != d",
  1731  			logicalExpr: "(a < b) && !(c != d)",
  1732  		},
  1733  		{
  1734  			cmp1:    func(a, b T) bool { return a < b },
  1735  			cmp2:    func(a, b T) bool { return a != b },
  1736  			combine: func(x, y bool) bool { return !(x) && (y) },
  1737  			targetFunc: func(a, b, c, d T) bool {
  1738  				if !(a < b) && (c != d) {
  1739  					return true
  1740  				}
  1741  				return false
  1742  			},
  1743  			cmp1Expr:    "a < b",
  1744  			cmp2Expr:    "c != d",
  1745  			logicalExpr: "!(a < b) && (c != d)",
  1746  		},
  1747  		{
  1748  			cmp1:    func(a, b T) bool { return a < b },
  1749  			cmp2:    func(a, b T) bool { return a != b },
  1750  			combine: func(x, y bool) bool { return !(x) && !(y) },
  1751  			targetFunc: func(a, b, c, d T) bool {
  1752  				if !(a < b) && !(c != d) {
  1753  					return true
  1754  				}
  1755  				return false
  1756  			},
  1757  			cmp1Expr:    "a < b",
  1758  			cmp2Expr:    "c != d",
  1759  			logicalExpr: "!(a < b) && !(c != d)",
  1760  		},
  1761  		{
  1762  			cmp1:    func(a, b T) bool { return a < b },
  1763  			cmp2:    func(a, b T) bool { return a != b },
  1764  			combine: func(x, y bool) bool { return (x) || (y) },
  1765  			targetFunc: func(a, b, c, d T) bool {
  1766  				if (a < b) || (c != d) {
  1767  					return true
  1768  				}
  1769  				return false
  1770  			},
  1771  			cmp1Expr:    "a < b",
  1772  			cmp2Expr:    "c != d",
  1773  			logicalExpr: "(a < b) || (c != d)",
  1774  		},
  1775  		{
  1776  			cmp1:    func(a, b T) bool { return a < b },
  1777  			cmp2:    func(a, b T) bool { return a != b },
  1778  			combine: func(x, y bool) bool { return (x) || !(y) },
  1779  			targetFunc: func(a, b, c, d T) bool {
  1780  				if (a < b) || !(c != d) {
  1781  					return true
  1782  				}
  1783  				return false
  1784  			},
  1785  			cmp1Expr:    "a < b",
  1786  			cmp2Expr:    "c != d",
  1787  			logicalExpr: "(a < b) || !(c != d)",
  1788  		},
  1789  		{
  1790  			cmp1:    func(a, b T) bool { return a < b },
  1791  			cmp2:    func(a, b T) bool { return a != b },
  1792  			combine: func(x, y bool) bool { return !(x) || (y) },
  1793  			targetFunc: func(a, b, c, d T) bool {
  1794  				if !(a < b) || (c != d) {
  1795  					return true
  1796  				}
  1797  				return false
  1798  			},
  1799  			cmp1Expr:    "a < b",
  1800  			cmp2Expr:    "c != d",
  1801  			logicalExpr: "!(a < b) || (c != d)",
  1802  		},
  1803  		{
  1804  			cmp1:    func(a, b T) bool { return a < b },
  1805  			cmp2:    func(a, b T) bool { return a != b },
  1806  			combine: func(x, y bool) bool { return !(x) || !(y) },
  1807  			targetFunc: func(a, b, c, d T) bool {
  1808  				if !(a < b) || !(c != d) {
  1809  					return true
  1810  				}
  1811  				return false
  1812  			},
  1813  			cmp1Expr:    "a < b",
  1814  			cmp2Expr:    "c != d",
  1815  			logicalExpr: "!(a < b) || !(c != d)",
  1816  		},
  1817  		{
  1818  			cmp1:    func(a, b T) bool { return a < b },
  1819  			cmp2:    func(a, b T) bool { return a >= b },
  1820  			combine: func(x, y bool) bool { return (x) && (y) },
  1821  			targetFunc: func(a, b, c, d T) bool {
  1822  				if (a < b) && (c >= d) {
  1823  					return true
  1824  				}
  1825  				return false
  1826  			},
  1827  			cmp1Expr:    "a < b",
  1828  			cmp2Expr:    "c >= d",
  1829  			logicalExpr: "(a < b) && (c >= d)",
  1830  		},
  1831  		{
  1832  			cmp1:    func(a, b T) bool { return a < b },
  1833  			cmp2:    func(a, b T) bool { return a >= b },
  1834  			combine: func(x, y bool) bool { return (x) && !(y) },
  1835  			targetFunc: func(a, b, c, d T) bool {
  1836  				if (a < b) && !(c >= d) {
  1837  					return true
  1838  				}
  1839  				return false
  1840  			},
  1841  			cmp1Expr:    "a < b",
  1842  			cmp2Expr:    "c >= d",
  1843  			logicalExpr: "(a < b) && !(c >= d)",
  1844  		},
  1845  		{
  1846  			cmp1:    func(a, b T) bool { return a < b },
  1847  			cmp2:    func(a, b T) bool { return a >= b },
  1848  			combine: func(x, y bool) bool { return !(x) && (y) },
  1849  			targetFunc: func(a, b, c, d T) bool {
  1850  				if !(a < b) && (c >= d) {
  1851  					return true
  1852  				}
  1853  				return false
  1854  			},
  1855  			cmp1Expr:    "a < b",
  1856  			cmp2Expr:    "c >= d",
  1857  			logicalExpr: "!(a < b) && (c >= d)",
  1858  		},
  1859  		{
  1860  			cmp1:    func(a, b T) bool { return a < b },
  1861  			cmp2:    func(a, b T) bool { return a >= b },
  1862  			combine: func(x, y bool) bool { return !(x) && !(y) },
  1863  			targetFunc: func(a, b, c, d T) bool {
  1864  				if !(a < b) && !(c >= d) {
  1865  					return true
  1866  				}
  1867  				return false
  1868  			},
  1869  			cmp1Expr:    "a < b",
  1870  			cmp2Expr:    "c >= d",
  1871  			logicalExpr: "!(a < b) && !(c >= d)",
  1872  		},
  1873  		{
  1874  			cmp1:    func(a, b T) bool { return a < b },
  1875  			cmp2:    func(a, b T) bool { return a >= b },
  1876  			combine: func(x, y bool) bool { return (x) || (y) },
  1877  			targetFunc: func(a, b, c, d T) bool {
  1878  				if (a < b) || (c >= d) {
  1879  					return true
  1880  				}
  1881  				return false
  1882  			},
  1883  			cmp1Expr:    "a < b",
  1884  			cmp2Expr:    "c >= d",
  1885  			logicalExpr: "(a < b) || (c >= d)",
  1886  		},
  1887  		{
  1888  			cmp1:    func(a, b T) bool { return a < b },
  1889  			cmp2:    func(a, b T) bool { return a >= b },
  1890  			combine: func(x, y bool) bool { return (x) || !(y) },
  1891  			targetFunc: func(a, b, c, d T) bool {
  1892  				if (a < b) || !(c >= d) {
  1893  					return true
  1894  				}
  1895  				return false
  1896  			},
  1897  			cmp1Expr:    "a < b",
  1898  			cmp2Expr:    "c >= d",
  1899  			logicalExpr: "(a < b) || !(c >= d)",
  1900  		},
  1901  		{
  1902  			cmp1:    func(a, b T) bool { return a < b },
  1903  			cmp2:    func(a, b T) bool { return a >= b },
  1904  			combine: func(x, y bool) bool { return !(x) || (y) },
  1905  			targetFunc: func(a, b, c, d T) bool {
  1906  				if !(a < b) || (c >= d) {
  1907  					return true
  1908  				}
  1909  				return false
  1910  			},
  1911  			cmp1Expr:    "a < b",
  1912  			cmp2Expr:    "c >= d",
  1913  			logicalExpr: "!(a < b) || (c >= d)",
  1914  		},
  1915  		{
  1916  			cmp1:    func(a, b T) bool { return a < b },
  1917  			cmp2:    func(a, b T) bool { return a >= b },
  1918  			combine: func(x, y bool) bool { return !(x) || !(y) },
  1919  			targetFunc: func(a, b, c, d T) bool {
  1920  				if !(a < b) || !(c >= d) {
  1921  					return true
  1922  				}
  1923  				return false
  1924  			},
  1925  			cmp1Expr:    "a < b",
  1926  			cmp2Expr:    "c >= d",
  1927  			logicalExpr: "!(a < b) || !(c >= d)",
  1928  		},
  1929  		{
  1930  			cmp1:    func(a, b T) bool { return a < b },
  1931  			cmp2:    func(a, b T) bool { return a > b },
  1932  			combine: func(x, y bool) bool { return (x) && (y) },
  1933  			targetFunc: func(a, b, c, d T) bool {
  1934  				if (a < b) && (c > d) {
  1935  					return true
  1936  				}
  1937  				return false
  1938  			},
  1939  			cmp1Expr:    "a < b",
  1940  			cmp2Expr:    "c > d",
  1941  			logicalExpr: "(a < b) && (c > d)",
  1942  		},
  1943  		{
  1944  			cmp1:    func(a, b T) bool { return a < b },
  1945  			cmp2:    func(a, b T) bool { return a > b },
  1946  			combine: func(x, y bool) bool { return (x) && !(y) },
  1947  			targetFunc: func(a, b, c, d T) bool {
  1948  				if (a < b) && !(c > d) {
  1949  					return true
  1950  				}
  1951  				return false
  1952  			},
  1953  			cmp1Expr:    "a < b",
  1954  			cmp2Expr:    "c > d",
  1955  			logicalExpr: "(a < b) && !(c > d)",
  1956  		},
  1957  		{
  1958  			cmp1:    func(a, b T) bool { return a < b },
  1959  			cmp2:    func(a, b T) bool { return a > b },
  1960  			combine: func(x, y bool) bool { return !(x) && (y) },
  1961  			targetFunc: func(a, b, c, d T) bool {
  1962  				if !(a < b) && (c > d) {
  1963  					return true
  1964  				}
  1965  				return false
  1966  			},
  1967  			cmp1Expr:    "a < b",
  1968  			cmp2Expr:    "c > d",
  1969  			logicalExpr: "!(a < b) && (c > d)",
  1970  		},
  1971  		{
  1972  			cmp1:    func(a, b T) bool { return a < b },
  1973  			cmp2:    func(a, b T) bool { return a > b },
  1974  			combine: func(x, y bool) bool { return !(x) && !(y) },
  1975  			targetFunc: func(a, b, c, d T) bool {
  1976  				if !(a < b) && !(c > d) {
  1977  					return true
  1978  				}
  1979  				return false
  1980  			},
  1981  			cmp1Expr:    "a < b",
  1982  			cmp2Expr:    "c > d",
  1983  			logicalExpr: "!(a < b) && !(c > d)",
  1984  		},
  1985  		{
  1986  			cmp1:    func(a, b T) bool { return a < b },
  1987  			cmp2:    func(a, b T) bool { return a > b },
  1988  			combine: func(x, y bool) bool { return (x) || (y) },
  1989  			targetFunc: func(a, b, c, d T) bool {
  1990  				if (a < b) || (c > d) {
  1991  					return true
  1992  				}
  1993  				return false
  1994  			},
  1995  			cmp1Expr:    "a < b",
  1996  			cmp2Expr:    "c > d",
  1997  			logicalExpr: "(a < b) || (c > d)",
  1998  		},
  1999  		{
  2000  			cmp1:    func(a, b T) bool { return a < b },
  2001  			cmp2:    func(a, b T) bool { return a > b },
  2002  			combine: func(x, y bool) bool { return (x) || !(y) },
  2003  			targetFunc: func(a, b, c, d T) bool {
  2004  				if (a < b) || !(c > d) {
  2005  					return true
  2006  				}
  2007  				return false
  2008  			},
  2009  			cmp1Expr:    "a < b",
  2010  			cmp2Expr:    "c > d",
  2011  			logicalExpr: "(a < b) || !(c > d)",
  2012  		},
  2013  		{
  2014  			cmp1:    func(a, b T) bool { return a < b },
  2015  			cmp2:    func(a, b T) bool { return a > b },
  2016  			combine: func(x, y bool) bool { return !(x) || (y) },
  2017  			targetFunc: func(a, b, c, d T) bool {
  2018  				if !(a < b) || (c > d) {
  2019  					return true
  2020  				}
  2021  				return false
  2022  			},
  2023  			cmp1Expr:    "a < b",
  2024  			cmp2Expr:    "c > d",
  2025  			logicalExpr: "!(a < b) || (c > d)",
  2026  		},
  2027  		{
  2028  			cmp1:    func(a, b T) bool { return a < b },
  2029  			cmp2:    func(a, b T) bool { return a > b },
  2030  			combine: func(x, y bool) bool { return !(x) || !(y) },
  2031  			targetFunc: func(a, b, c, d T) bool {
  2032  				if !(a < b) || !(c > d) {
  2033  					return true
  2034  				}
  2035  				return false
  2036  			},
  2037  			cmp1Expr:    "a < b",
  2038  			cmp2Expr:    "c > d",
  2039  			logicalExpr: "!(a < b) || !(c > d)",
  2040  		},
  2041  		{
  2042  			cmp1:    func(a, b T) bool { return a != b },
  2043  			cmp2:    func(a, b T) bool { return a == b },
  2044  			combine: func(x, y bool) bool { return (x) && (y) },
  2045  			targetFunc: func(a, b, c, d T) bool {
  2046  				if (a != b) && (c == d) {
  2047  					return true
  2048  				}
  2049  				return false
  2050  			},
  2051  			cmp1Expr:    "a != b",
  2052  			cmp2Expr:    "c == d",
  2053  			logicalExpr: "(a != b) && (c == d)",
  2054  		},
  2055  		{
  2056  			cmp1:    func(a, b T) bool { return a != b },
  2057  			cmp2:    func(a, b T) bool { return a == b },
  2058  			combine: func(x, y bool) bool { return (x) && !(y) },
  2059  			targetFunc: func(a, b, c, d T) bool {
  2060  				if (a != b) && !(c == d) {
  2061  					return true
  2062  				}
  2063  				return false
  2064  			},
  2065  			cmp1Expr:    "a != b",
  2066  			cmp2Expr:    "c == d",
  2067  			logicalExpr: "(a != b) && !(c == d)",
  2068  		},
  2069  		{
  2070  			cmp1:    func(a, b T) bool { return a != b },
  2071  			cmp2:    func(a, b T) bool { return a == b },
  2072  			combine: func(x, y bool) bool { return !(x) && (y) },
  2073  			targetFunc: func(a, b, c, d T) bool {
  2074  				if !(a != b) && (c == d) {
  2075  					return true
  2076  				}
  2077  				return false
  2078  			},
  2079  			cmp1Expr:    "a != b",
  2080  			cmp2Expr:    "c == d",
  2081  			logicalExpr: "!(a != b) && (c == d)",
  2082  		},
  2083  		{
  2084  			cmp1:    func(a, b T) bool { return a != b },
  2085  			cmp2:    func(a, b T) bool { return a == b },
  2086  			combine: func(x, y bool) bool { return !(x) && !(y) },
  2087  			targetFunc: func(a, b, c, d T) bool {
  2088  				if !(a != b) && !(c == d) {
  2089  					return true
  2090  				}
  2091  				return false
  2092  			},
  2093  			cmp1Expr:    "a != b",
  2094  			cmp2Expr:    "c == d",
  2095  			logicalExpr: "!(a != b) && !(c == d)",
  2096  		},
  2097  		{
  2098  			cmp1:    func(a, b T) bool { return a != b },
  2099  			cmp2:    func(a, b T) bool { return a == b },
  2100  			combine: func(x, y bool) bool { return (x) || (y) },
  2101  			targetFunc: func(a, b, c, d T) bool {
  2102  				if (a != b) || (c == d) {
  2103  					return true
  2104  				}
  2105  				return false
  2106  			},
  2107  			cmp1Expr:    "a != b",
  2108  			cmp2Expr:    "c == d",
  2109  			logicalExpr: "(a != b) || (c == d)",
  2110  		},
  2111  		{
  2112  			cmp1:    func(a, b T) bool { return a != b },
  2113  			cmp2:    func(a, b T) bool { return a == b },
  2114  			combine: func(x, y bool) bool { return (x) || !(y) },
  2115  			targetFunc: func(a, b, c, d T) bool {
  2116  				if (a != b) || !(c == d) {
  2117  					return true
  2118  				}
  2119  				return false
  2120  			},
  2121  			cmp1Expr:    "a != b",
  2122  			cmp2Expr:    "c == d",
  2123  			logicalExpr: "(a != b) || !(c == d)",
  2124  		},
  2125  		{
  2126  			cmp1:    func(a, b T) bool { return a != b },
  2127  			cmp2:    func(a, b T) bool { return a == b },
  2128  			combine: func(x, y bool) bool { return !(x) || (y) },
  2129  			targetFunc: func(a, b, c, d T) bool {
  2130  				if !(a != b) || (c == d) {
  2131  					return true
  2132  				}
  2133  				return false
  2134  			},
  2135  			cmp1Expr:    "a != b",
  2136  			cmp2Expr:    "c == d",
  2137  			logicalExpr: "!(a != b) || (c == d)",
  2138  		},
  2139  		{
  2140  			cmp1:    func(a, b T) bool { return a != b },
  2141  			cmp2:    func(a, b T) bool { return a == b },
  2142  			combine: func(x, y bool) bool { return !(x) || !(y) },
  2143  			targetFunc: func(a, b, c, d T) bool {
  2144  				if !(a != b) || !(c == d) {
  2145  					return true
  2146  				}
  2147  				return false
  2148  			},
  2149  			cmp1Expr:    "a != b",
  2150  			cmp2Expr:    "c == d",
  2151  			logicalExpr: "!(a != b) || !(c == d)",
  2152  		},
  2153  		{
  2154  			cmp1:    func(a, b T) bool { return a != b },
  2155  			cmp2:    func(a, b T) bool { return a <= b },
  2156  			combine: func(x, y bool) bool { return (x) && (y) },
  2157  			targetFunc: func(a, b, c, d T) bool {
  2158  				if (a != b) && (c <= d) {
  2159  					return true
  2160  				}
  2161  				return false
  2162  			},
  2163  			cmp1Expr:    "a != b",
  2164  			cmp2Expr:    "c <= d",
  2165  			logicalExpr: "(a != b) && (c <= d)",
  2166  		},
  2167  		{
  2168  			cmp1:    func(a, b T) bool { return a != b },
  2169  			cmp2:    func(a, b T) bool { return a <= b },
  2170  			combine: func(x, y bool) bool { return (x) && !(y) },
  2171  			targetFunc: func(a, b, c, d T) bool {
  2172  				if (a != b) && !(c <= d) {
  2173  					return true
  2174  				}
  2175  				return false
  2176  			},
  2177  			cmp1Expr:    "a != b",
  2178  			cmp2Expr:    "c <= d",
  2179  			logicalExpr: "(a != b) && !(c <= d)",
  2180  		},
  2181  		{
  2182  			cmp1:    func(a, b T) bool { return a != b },
  2183  			cmp2:    func(a, b T) bool { return a <= b },
  2184  			combine: func(x, y bool) bool { return !(x) && (y) },
  2185  			targetFunc: func(a, b, c, d T) bool {
  2186  				if !(a != b) && (c <= d) {
  2187  					return true
  2188  				}
  2189  				return false
  2190  			},
  2191  			cmp1Expr:    "a != b",
  2192  			cmp2Expr:    "c <= d",
  2193  			logicalExpr: "!(a != b) && (c <= d)",
  2194  		},
  2195  		{
  2196  			cmp1:    func(a, b T) bool { return a != b },
  2197  			cmp2:    func(a, b T) bool { return a <= b },
  2198  			combine: func(x, y bool) bool { return !(x) && !(y) },
  2199  			targetFunc: func(a, b, c, d T) bool {
  2200  				if !(a != b) && !(c <= d) {
  2201  					return true
  2202  				}
  2203  				return false
  2204  			},
  2205  			cmp1Expr:    "a != b",
  2206  			cmp2Expr:    "c <= d",
  2207  			logicalExpr: "!(a != b) && !(c <= d)",
  2208  		},
  2209  		{
  2210  			cmp1:    func(a, b T) bool { return a != b },
  2211  			cmp2:    func(a, b T) bool { return a <= b },
  2212  			combine: func(x, y bool) bool { return (x) || (y) },
  2213  			targetFunc: func(a, b, c, d T) bool {
  2214  				if (a != b) || (c <= d) {
  2215  					return true
  2216  				}
  2217  				return false
  2218  			},
  2219  			cmp1Expr:    "a != b",
  2220  			cmp2Expr:    "c <= d",
  2221  			logicalExpr: "(a != b) || (c <= d)",
  2222  		},
  2223  		{
  2224  			cmp1:    func(a, b T) bool { return a != b },
  2225  			cmp2:    func(a, b T) bool { return a <= b },
  2226  			combine: func(x, y bool) bool { return (x) || !(y) },
  2227  			targetFunc: func(a, b, c, d T) bool {
  2228  				if (a != b) || !(c <= d) {
  2229  					return true
  2230  				}
  2231  				return false
  2232  			},
  2233  			cmp1Expr:    "a != b",
  2234  			cmp2Expr:    "c <= d",
  2235  			logicalExpr: "(a != b) || !(c <= d)",
  2236  		},
  2237  		{
  2238  			cmp1:    func(a, b T) bool { return a != b },
  2239  			cmp2:    func(a, b T) bool { return a <= b },
  2240  			combine: func(x, y bool) bool { return !(x) || (y) },
  2241  			targetFunc: func(a, b, c, d T) bool {
  2242  				if !(a != b) || (c <= d) {
  2243  					return true
  2244  				}
  2245  				return false
  2246  			},
  2247  			cmp1Expr:    "a != b",
  2248  			cmp2Expr:    "c <= d",
  2249  			logicalExpr: "!(a != b) || (c <= d)",
  2250  		},
  2251  		{
  2252  			cmp1:    func(a, b T) bool { return a != b },
  2253  			cmp2:    func(a, b T) bool { return a <= b },
  2254  			combine: func(x, y bool) bool { return !(x) || !(y) },
  2255  			targetFunc: func(a, b, c, d T) bool {
  2256  				if !(a != b) || !(c <= d) {
  2257  					return true
  2258  				}
  2259  				return false
  2260  			},
  2261  			cmp1Expr:    "a != b",
  2262  			cmp2Expr:    "c <= d",
  2263  			logicalExpr: "!(a != b) || !(c <= d)",
  2264  		},
  2265  		{
  2266  			cmp1:    func(a, b T) bool { return a != b },
  2267  			cmp2:    func(a, b T) bool { return a < b },
  2268  			combine: func(x, y bool) bool { return (x) && (y) },
  2269  			targetFunc: func(a, b, c, d T) bool {
  2270  				if (a != b) && (c < d) {
  2271  					return true
  2272  				}
  2273  				return false
  2274  			},
  2275  			cmp1Expr:    "a != b",
  2276  			cmp2Expr:    "c < d",
  2277  			logicalExpr: "(a != b) && (c < d)",
  2278  		},
  2279  		{
  2280  			cmp1:    func(a, b T) bool { return a != b },
  2281  			cmp2:    func(a, b T) bool { return a < b },
  2282  			combine: func(x, y bool) bool { return (x) && !(y) },
  2283  			targetFunc: func(a, b, c, d T) bool {
  2284  				if (a != b) && !(c < d) {
  2285  					return true
  2286  				}
  2287  				return false
  2288  			},
  2289  			cmp1Expr:    "a != b",
  2290  			cmp2Expr:    "c < d",
  2291  			logicalExpr: "(a != b) && !(c < d)",
  2292  		},
  2293  		{
  2294  			cmp1:    func(a, b T) bool { return a != b },
  2295  			cmp2:    func(a, b T) bool { return a < b },
  2296  			combine: func(x, y bool) bool { return !(x) && (y) },
  2297  			targetFunc: func(a, b, c, d T) bool {
  2298  				if !(a != b) && (c < d) {
  2299  					return true
  2300  				}
  2301  				return false
  2302  			},
  2303  			cmp1Expr:    "a != b",
  2304  			cmp2Expr:    "c < d",
  2305  			logicalExpr: "!(a != b) && (c < d)",
  2306  		},
  2307  		{
  2308  			cmp1:    func(a, b T) bool { return a != b },
  2309  			cmp2:    func(a, b T) bool { return a < b },
  2310  			combine: func(x, y bool) bool { return !(x) && !(y) },
  2311  			targetFunc: func(a, b, c, d T) bool {
  2312  				if !(a != b) && !(c < d) {
  2313  					return true
  2314  				}
  2315  				return false
  2316  			},
  2317  			cmp1Expr:    "a != b",
  2318  			cmp2Expr:    "c < d",
  2319  			logicalExpr: "!(a != b) && !(c < d)",
  2320  		},
  2321  		{
  2322  			cmp1:    func(a, b T) bool { return a != b },
  2323  			cmp2:    func(a, b T) bool { return a < b },
  2324  			combine: func(x, y bool) bool { return (x) || (y) },
  2325  			targetFunc: func(a, b, c, d T) bool {
  2326  				if (a != b) || (c < d) {
  2327  					return true
  2328  				}
  2329  				return false
  2330  			},
  2331  			cmp1Expr:    "a != b",
  2332  			cmp2Expr:    "c < d",
  2333  			logicalExpr: "(a != b) || (c < d)",
  2334  		},
  2335  		{
  2336  			cmp1:    func(a, b T) bool { return a != b },
  2337  			cmp2:    func(a, b T) bool { return a < b },
  2338  			combine: func(x, y bool) bool { return (x) || !(y) },
  2339  			targetFunc: func(a, b, c, d T) bool {
  2340  				if (a != b) || !(c < d) {
  2341  					return true
  2342  				}
  2343  				return false
  2344  			},
  2345  			cmp1Expr:    "a != b",
  2346  			cmp2Expr:    "c < d",
  2347  			logicalExpr: "(a != b) || !(c < d)",
  2348  		},
  2349  		{
  2350  			cmp1:    func(a, b T) bool { return a != b },
  2351  			cmp2:    func(a, b T) bool { return a < b },
  2352  			combine: func(x, y bool) bool { return !(x) || (y) },
  2353  			targetFunc: func(a, b, c, d T) bool {
  2354  				if !(a != b) || (c < d) {
  2355  					return true
  2356  				}
  2357  				return false
  2358  			},
  2359  			cmp1Expr:    "a != b",
  2360  			cmp2Expr:    "c < d",
  2361  			logicalExpr: "!(a != b) || (c < d)",
  2362  		},
  2363  		{
  2364  			cmp1:    func(a, b T) bool { return a != b },
  2365  			cmp2:    func(a, b T) bool { return a < b },
  2366  			combine: func(x, y bool) bool { return !(x) || !(y) },
  2367  			targetFunc: func(a, b, c, d T) bool {
  2368  				if !(a != b) || !(c < d) {
  2369  					return true
  2370  				}
  2371  				return false
  2372  			},
  2373  			cmp1Expr:    "a != b",
  2374  			cmp2Expr:    "c < d",
  2375  			logicalExpr: "!(a != b) || !(c < d)",
  2376  		},
  2377  		{
  2378  			cmp1:    func(a, b T) bool { return a != b },
  2379  			cmp2:    func(a, b T) bool { return a != b },
  2380  			combine: func(x, y bool) bool { return (x) && (y) },
  2381  			targetFunc: func(a, b, c, d T) bool {
  2382  				if (a != b) && (c != d) {
  2383  					return true
  2384  				}
  2385  				return false
  2386  			},
  2387  			cmp1Expr:    "a != b",
  2388  			cmp2Expr:    "c != d",
  2389  			logicalExpr: "(a != b) && (c != d)",
  2390  		},
  2391  		{
  2392  			cmp1:    func(a, b T) bool { return a != b },
  2393  			cmp2:    func(a, b T) bool { return a != b },
  2394  			combine: func(x, y bool) bool { return (x) && !(y) },
  2395  			targetFunc: func(a, b, c, d T) bool {
  2396  				if (a != b) && !(c != d) {
  2397  					return true
  2398  				}
  2399  				return false
  2400  			},
  2401  			cmp1Expr:    "a != b",
  2402  			cmp2Expr:    "c != d",
  2403  			logicalExpr: "(a != b) && !(c != d)",
  2404  		},
  2405  		{
  2406  			cmp1:    func(a, b T) bool { return a != b },
  2407  			cmp2:    func(a, b T) bool { return a != b },
  2408  			combine: func(x, y bool) bool { return !(x) && (y) },
  2409  			targetFunc: func(a, b, c, d T) bool {
  2410  				if !(a != b) && (c != d) {
  2411  					return true
  2412  				}
  2413  				return false
  2414  			},
  2415  			cmp1Expr:    "a != b",
  2416  			cmp2Expr:    "c != d",
  2417  			logicalExpr: "!(a != b) && (c != d)",
  2418  		},
  2419  		{
  2420  			cmp1:    func(a, b T) bool { return a != b },
  2421  			cmp2:    func(a, b T) bool { return a != b },
  2422  			combine: func(x, y bool) bool { return !(x) && !(y) },
  2423  			targetFunc: func(a, b, c, d T) bool {
  2424  				if !(a != b) && !(c != d) {
  2425  					return true
  2426  				}
  2427  				return false
  2428  			},
  2429  			cmp1Expr:    "a != b",
  2430  			cmp2Expr:    "c != d",
  2431  			logicalExpr: "!(a != b) && !(c != d)",
  2432  		},
  2433  		{
  2434  			cmp1:    func(a, b T) bool { return a != b },
  2435  			cmp2:    func(a, b T) bool { return a != b },
  2436  			combine: func(x, y bool) bool { return (x) || (y) },
  2437  			targetFunc: func(a, b, c, d T) bool {
  2438  				if (a != b) || (c != d) {
  2439  					return true
  2440  				}
  2441  				return false
  2442  			},
  2443  			cmp1Expr:    "a != b",
  2444  			cmp2Expr:    "c != d",
  2445  			logicalExpr: "(a != b) || (c != d)",
  2446  		},
  2447  		{
  2448  			cmp1:    func(a, b T) bool { return a != b },
  2449  			cmp2:    func(a, b T) bool { return a != b },
  2450  			combine: func(x, y bool) bool { return (x) || !(y) },
  2451  			targetFunc: func(a, b, c, d T) bool {
  2452  				if (a != b) || !(c != d) {
  2453  					return true
  2454  				}
  2455  				return false
  2456  			},
  2457  			cmp1Expr:    "a != b",
  2458  			cmp2Expr:    "c != d",
  2459  			logicalExpr: "(a != b) || !(c != d)",
  2460  		},
  2461  		{
  2462  			cmp1:    func(a, b T) bool { return a != b },
  2463  			cmp2:    func(a, b T) bool { return a != b },
  2464  			combine: func(x, y bool) bool { return !(x) || (y) },
  2465  			targetFunc: func(a, b, c, d T) bool {
  2466  				if !(a != b) || (c != d) {
  2467  					return true
  2468  				}
  2469  				return false
  2470  			},
  2471  			cmp1Expr:    "a != b",
  2472  			cmp2Expr:    "c != d",
  2473  			logicalExpr: "!(a != b) || (c != d)",
  2474  		},
  2475  		{
  2476  			cmp1:    func(a, b T) bool { return a != b },
  2477  			cmp2:    func(a, b T) bool { return a != b },
  2478  			combine: func(x, y bool) bool { return !(x) || !(y) },
  2479  			targetFunc: func(a, b, c, d T) bool {
  2480  				if !(a != b) || !(c != d) {
  2481  					return true
  2482  				}
  2483  				return false
  2484  			},
  2485  			cmp1Expr:    "a != b",
  2486  			cmp2Expr:    "c != d",
  2487  			logicalExpr: "!(a != b) || !(c != d)",
  2488  		},
  2489  		{
  2490  			cmp1:    func(a, b T) bool { return a != b },
  2491  			cmp2:    func(a, b T) bool { return a >= b },
  2492  			combine: func(x, y bool) bool { return (x) && (y) },
  2493  			targetFunc: func(a, b, c, d T) bool {
  2494  				if (a != b) && (c >= d) {
  2495  					return true
  2496  				}
  2497  				return false
  2498  			},
  2499  			cmp1Expr:    "a != b",
  2500  			cmp2Expr:    "c >= d",
  2501  			logicalExpr: "(a != b) && (c >= d)",
  2502  		},
  2503  		{
  2504  			cmp1:    func(a, b T) bool { return a != b },
  2505  			cmp2:    func(a, b T) bool { return a >= b },
  2506  			combine: func(x, y bool) bool { return (x) && !(y) },
  2507  			targetFunc: func(a, b, c, d T) bool {
  2508  				if (a != b) && !(c >= d) {
  2509  					return true
  2510  				}
  2511  				return false
  2512  			},
  2513  			cmp1Expr:    "a != b",
  2514  			cmp2Expr:    "c >= d",
  2515  			logicalExpr: "(a != b) && !(c >= d)",
  2516  		},
  2517  		{
  2518  			cmp1:    func(a, b T) bool { return a != b },
  2519  			cmp2:    func(a, b T) bool { return a >= b },
  2520  			combine: func(x, y bool) bool { return !(x) && (y) },
  2521  			targetFunc: func(a, b, c, d T) bool {
  2522  				if !(a != b) && (c >= d) {
  2523  					return true
  2524  				}
  2525  				return false
  2526  			},
  2527  			cmp1Expr:    "a != b",
  2528  			cmp2Expr:    "c >= d",
  2529  			logicalExpr: "!(a != b) && (c >= d)",
  2530  		},
  2531  		{
  2532  			cmp1:    func(a, b T) bool { return a != b },
  2533  			cmp2:    func(a, b T) bool { return a >= b },
  2534  			combine: func(x, y bool) bool { return !(x) && !(y) },
  2535  			targetFunc: func(a, b, c, d T) bool {
  2536  				if !(a != b) && !(c >= d) {
  2537  					return true
  2538  				}
  2539  				return false
  2540  			},
  2541  			cmp1Expr:    "a != b",
  2542  			cmp2Expr:    "c >= d",
  2543  			logicalExpr: "!(a != b) && !(c >= d)",
  2544  		},
  2545  		{
  2546  			cmp1:    func(a, b T) bool { return a != b },
  2547  			cmp2:    func(a, b T) bool { return a >= b },
  2548  			combine: func(x, y bool) bool { return (x) || (y) },
  2549  			targetFunc: func(a, b, c, d T) bool {
  2550  				if (a != b) || (c >= d) {
  2551  					return true
  2552  				}
  2553  				return false
  2554  			},
  2555  			cmp1Expr:    "a != b",
  2556  			cmp2Expr:    "c >= d",
  2557  			logicalExpr: "(a != b) || (c >= d)",
  2558  		},
  2559  		{
  2560  			cmp1:    func(a, b T) bool { return a != b },
  2561  			cmp2:    func(a, b T) bool { return a >= b },
  2562  			combine: func(x, y bool) bool { return (x) || !(y) },
  2563  			targetFunc: func(a, b, c, d T) bool {
  2564  				if (a != b) || !(c >= d) {
  2565  					return true
  2566  				}
  2567  				return false
  2568  			},
  2569  			cmp1Expr:    "a != b",
  2570  			cmp2Expr:    "c >= d",
  2571  			logicalExpr: "(a != b) || !(c >= d)",
  2572  		},
  2573  		{
  2574  			cmp1:    func(a, b T) bool { return a != b },
  2575  			cmp2:    func(a, b T) bool { return a >= b },
  2576  			combine: func(x, y bool) bool { return !(x) || (y) },
  2577  			targetFunc: func(a, b, c, d T) bool {
  2578  				if !(a != b) || (c >= d) {
  2579  					return true
  2580  				}
  2581  				return false
  2582  			},
  2583  			cmp1Expr:    "a != b",
  2584  			cmp2Expr:    "c >= d",
  2585  			logicalExpr: "!(a != b) || (c >= d)",
  2586  		},
  2587  		{
  2588  			cmp1:    func(a, b T) bool { return a != b },
  2589  			cmp2:    func(a, b T) bool { return a >= b },
  2590  			combine: func(x, y bool) bool { return !(x) || !(y) },
  2591  			targetFunc: func(a, b, c, d T) bool {
  2592  				if !(a != b) || !(c >= d) {
  2593  					return true
  2594  				}
  2595  				return false
  2596  			},
  2597  			cmp1Expr:    "a != b",
  2598  			cmp2Expr:    "c >= d",
  2599  			logicalExpr: "!(a != b) || !(c >= d)",
  2600  		},
  2601  		{
  2602  			cmp1:    func(a, b T) bool { return a != b },
  2603  			cmp2:    func(a, b T) bool { return a > b },
  2604  			combine: func(x, y bool) bool { return (x) && (y) },
  2605  			targetFunc: func(a, b, c, d T) bool {
  2606  				if (a != b) && (c > d) {
  2607  					return true
  2608  				}
  2609  				return false
  2610  			},
  2611  			cmp1Expr:    "a != b",
  2612  			cmp2Expr:    "c > d",
  2613  			logicalExpr: "(a != b) && (c > d)",
  2614  		},
  2615  		{
  2616  			cmp1:    func(a, b T) bool { return a != b },
  2617  			cmp2:    func(a, b T) bool { return a > b },
  2618  			combine: func(x, y bool) bool { return (x) && !(y) },
  2619  			targetFunc: func(a, b, c, d T) bool {
  2620  				if (a != b) && !(c > d) {
  2621  					return true
  2622  				}
  2623  				return false
  2624  			},
  2625  			cmp1Expr:    "a != b",
  2626  			cmp2Expr:    "c > d",
  2627  			logicalExpr: "(a != b) && !(c > d)",
  2628  		},
  2629  		{
  2630  			cmp1:    func(a, b T) bool { return a != b },
  2631  			cmp2:    func(a, b T) bool { return a > b },
  2632  			combine: func(x, y bool) bool { return !(x) && (y) },
  2633  			targetFunc: func(a, b, c, d T) bool {
  2634  				if !(a != b) && (c > d) {
  2635  					return true
  2636  				}
  2637  				return false
  2638  			},
  2639  			cmp1Expr:    "a != b",
  2640  			cmp2Expr:    "c > d",
  2641  			logicalExpr: "!(a != b) && (c > d)",
  2642  		},
  2643  		{
  2644  			cmp1:    func(a, b T) bool { return a != b },
  2645  			cmp2:    func(a, b T) bool { return a > b },
  2646  			combine: func(x, y bool) bool { return !(x) && !(y) },
  2647  			targetFunc: func(a, b, c, d T) bool {
  2648  				if !(a != b) && !(c > d) {
  2649  					return true
  2650  				}
  2651  				return false
  2652  			},
  2653  			cmp1Expr:    "a != b",
  2654  			cmp2Expr:    "c > d",
  2655  			logicalExpr: "!(a != b) && !(c > d)",
  2656  		},
  2657  		{
  2658  			cmp1:    func(a, b T) bool { return a != b },
  2659  			cmp2:    func(a, b T) bool { return a > b },
  2660  			combine: func(x, y bool) bool { return (x) || (y) },
  2661  			targetFunc: func(a, b, c, d T) bool {
  2662  				if (a != b) || (c > d) {
  2663  					return true
  2664  				}
  2665  				return false
  2666  			},
  2667  			cmp1Expr:    "a != b",
  2668  			cmp2Expr:    "c > d",
  2669  			logicalExpr: "(a != b) || (c > d)",
  2670  		},
  2671  		{
  2672  			cmp1:    func(a, b T) bool { return a != b },
  2673  			cmp2:    func(a, b T) bool { return a > b },
  2674  			combine: func(x, y bool) bool { return (x) || !(y) },
  2675  			targetFunc: func(a, b, c, d T) bool {
  2676  				if (a != b) || !(c > d) {
  2677  					return true
  2678  				}
  2679  				return false
  2680  			},
  2681  			cmp1Expr:    "a != b",
  2682  			cmp2Expr:    "c > d",
  2683  			logicalExpr: "(a != b) || !(c > d)",
  2684  		},
  2685  		{
  2686  			cmp1:    func(a, b T) bool { return a != b },
  2687  			cmp2:    func(a, b T) bool { return a > b },
  2688  			combine: func(x, y bool) bool { return !(x) || (y) },
  2689  			targetFunc: func(a, b, c, d T) bool {
  2690  				if !(a != b) || (c > d) {
  2691  					return true
  2692  				}
  2693  				return false
  2694  			},
  2695  			cmp1Expr:    "a != b",
  2696  			cmp2Expr:    "c > d",
  2697  			logicalExpr: "!(a != b) || (c > d)",
  2698  		},
  2699  		{
  2700  			cmp1:    func(a, b T) bool { return a != b },
  2701  			cmp2:    func(a, b T) bool { return a > b },
  2702  			combine: func(x, y bool) bool { return !(x) || !(y) },
  2703  			targetFunc: func(a, b, c, d T) bool {
  2704  				if !(a != b) || !(c > d) {
  2705  					return true
  2706  				}
  2707  				return false
  2708  			},
  2709  			cmp1Expr:    "a != b",
  2710  			cmp2Expr:    "c > d",
  2711  			logicalExpr: "!(a != b) || !(c > d)",
  2712  		},
  2713  		{
  2714  			cmp1:    func(a, b T) bool { return a >= b },
  2715  			cmp2:    func(a, b T) bool { return a == b },
  2716  			combine: func(x, y bool) bool { return (x) && (y) },
  2717  			targetFunc: func(a, b, c, d T) bool {
  2718  				if (a >= b) && (c == d) {
  2719  					return true
  2720  				}
  2721  				return false
  2722  			},
  2723  			cmp1Expr:    "a >= b",
  2724  			cmp2Expr:    "c == d",
  2725  			logicalExpr: "(a >= b) && (c == d)",
  2726  		},
  2727  		{
  2728  			cmp1:    func(a, b T) bool { return a >= b },
  2729  			cmp2:    func(a, b T) bool { return a == b },
  2730  			combine: func(x, y bool) bool { return (x) && !(y) },
  2731  			targetFunc: func(a, b, c, d T) bool {
  2732  				if (a >= b) && !(c == d) {
  2733  					return true
  2734  				}
  2735  				return false
  2736  			},
  2737  			cmp1Expr:    "a >= b",
  2738  			cmp2Expr:    "c == d",
  2739  			logicalExpr: "(a >= b) && !(c == d)",
  2740  		},
  2741  		{
  2742  			cmp1:    func(a, b T) bool { return a >= b },
  2743  			cmp2:    func(a, b T) bool { return a == b },
  2744  			combine: func(x, y bool) bool { return !(x) && (y) },
  2745  			targetFunc: func(a, b, c, d T) bool {
  2746  				if !(a >= b) && (c == d) {
  2747  					return true
  2748  				}
  2749  				return false
  2750  			},
  2751  			cmp1Expr:    "a >= b",
  2752  			cmp2Expr:    "c == d",
  2753  			logicalExpr: "!(a >= b) && (c == d)",
  2754  		},
  2755  		{
  2756  			cmp1:    func(a, b T) bool { return a >= b },
  2757  			cmp2:    func(a, b T) bool { return a == b },
  2758  			combine: func(x, y bool) bool { return !(x) && !(y) },
  2759  			targetFunc: func(a, b, c, d T) bool {
  2760  				if !(a >= b) && !(c == d) {
  2761  					return true
  2762  				}
  2763  				return false
  2764  			},
  2765  			cmp1Expr:    "a >= b",
  2766  			cmp2Expr:    "c == d",
  2767  			logicalExpr: "!(a >= b) && !(c == d)",
  2768  		},
  2769  		{
  2770  			cmp1:    func(a, b T) bool { return a >= b },
  2771  			cmp2:    func(a, b T) bool { return a == b },
  2772  			combine: func(x, y bool) bool { return (x) || (y) },
  2773  			targetFunc: func(a, b, c, d T) bool {
  2774  				if (a >= b) || (c == d) {
  2775  					return true
  2776  				}
  2777  				return false
  2778  			},
  2779  			cmp1Expr:    "a >= b",
  2780  			cmp2Expr:    "c == d",
  2781  			logicalExpr: "(a >= b) || (c == d)",
  2782  		},
  2783  		{
  2784  			cmp1:    func(a, b T) bool { return a >= b },
  2785  			cmp2:    func(a, b T) bool { return a == b },
  2786  			combine: func(x, y bool) bool { return (x) || !(y) },
  2787  			targetFunc: func(a, b, c, d T) bool {
  2788  				if (a >= b) || !(c == d) {
  2789  					return true
  2790  				}
  2791  				return false
  2792  			},
  2793  			cmp1Expr:    "a >= b",
  2794  			cmp2Expr:    "c == d",
  2795  			logicalExpr: "(a >= b) || !(c == d)",
  2796  		},
  2797  		{
  2798  			cmp1:    func(a, b T) bool { return a >= b },
  2799  			cmp2:    func(a, b T) bool { return a == b },
  2800  			combine: func(x, y bool) bool { return !(x) || (y) },
  2801  			targetFunc: func(a, b, c, d T) bool {
  2802  				if !(a >= b) || (c == d) {
  2803  					return true
  2804  				}
  2805  				return false
  2806  			},
  2807  			cmp1Expr:    "a >= b",
  2808  			cmp2Expr:    "c == d",
  2809  			logicalExpr: "!(a >= b) || (c == d)",
  2810  		},
  2811  		{
  2812  			cmp1:    func(a, b T) bool { return a >= b },
  2813  			cmp2:    func(a, b T) bool { return a == b },
  2814  			combine: func(x, y bool) bool { return !(x) || !(y) },
  2815  			targetFunc: func(a, b, c, d T) bool {
  2816  				if !(a >= b) || !(c == d) {
  2817  					return true
  2818  				}
  2819  				return false
  2820  			},
  2821  			cmp1Expr:    "a >= b",
  2822  			cmp2Expr:    "c == d",
  2823  			logicalExpr: "!(a >= b) || !(c == d)",
  2824  		},
  2825  		{
  2826  			cmp1:    func(a, b T) bool { return a >= b },
  2827  			cmp2:    func(a, b T) bool { return a <= b },
  2828  			combine: func(x, y bool) bool { return (x) && (y) },
  2829  			targetFunc: func(a, b, c, d T) bool {
  2830  				if (a >= b) && (c <= d) {
  2831  					return true
  2832  				}
  2833  				return false
  2834  			},
  2835  			cmp1Expr:    "a >= b",
  2836  			cmp2Expr:    "c <= d",
  2837  			logicalExpr: "(a >= b) && (c <= d)",
  2838  		},
  2839  		{
  2840  			cmp1:    func(a, b T) bool { return a >= b },
  2841  			cmp2:    func(a, b T) bool { return a <= b },
  2842  			combine: func(x, y bool) bool { return (x) && !(y) },
  2843  			targetFunc: func(a, b, c, d T) bool {
  2844  				if (a >= b) && !(c <= d) {
  2845  					return true
  2846  				}
  2847  				return false
  2848  			},
  2849  			cmp1Expr:    "a >= b",
  2850  			cmp2Expr:    "c <= d",
  2851  			logicalExpr: "(a >= b) && !(c <= d)",
  2852  		},
  2853  		{
  2854  			cmp1:    func(a, b T) bool { return a >= b },
  2855  			cmp2:    func(a, b T) bool { return a <= b },
  2856  			combine: func(x, y bool) bool { return !(x) && (y) },
  2857  			targetFunc: func(a, b, c, d T) bool {
  2858  				if !(a >= b) && (c <= d) {
  2859  					return true
  2860  				}
  2861  				return false
  2862  			},
  2863  			cmp1Expr:    "a >= b",
  2864  			cmp2Expr:    "c <= d",
  2865  			logicalExpr: "!(a >= b) && (c <= d)",
  2866  		},
  2867  		{
  2868  			cmp1:    func(a, b T) bool { return a >= b },
  2869  			cmp2:    func(a, b T) bool { return a <= b },
  2870  			combine: func(x, y bool) bool { return !(x) && !(y) },
  2871  			targetFunc: func(a, b, c, d T) bool {
  2872  				if !(a >= b) && !(c <= d) {
  2873  					return true
  2874  				}
  2875  				return false
  2876  			},
  2877  			cmp1Expr:    "a >= b",
  2878  			cmp2Expr:    "c <= d",
  2879  			logicalExpr: "!(a >= b) && !(c <= d)",
  2880  		},
  2881  		{
  2882  			cmp1:    func(a, b T) bool { return a >= b },
  2883  			cmp2:    func(a, b T) bool { return a <= b },
  2884  			combine: func(x, y bool) bool { return (x) || (y) },
  2885  			targetFunc: func(a, b, c, d T) bool {
  2886  				if (a >= b) || (c <= d) {
  2887  					return true
  2888  				}
  2889  				return false
  2890  			},
  2891  			cmp1Expr:    "a >= b",
  2892  			cmp2Expr:    "c <= d",
  2893  			logicalExpr: "(a >= b) || (c <= d)",
  2894  		},
  2895  		{
  2896  			cmp1:    func(a, b T) bool { return a >= b },
  2897  			cmp2:    func(a, b T) bool { return a <= b },
  2898  			combine: func(x, y bool) bool { return (x) || !(y) },
  2899  			targetFunc: func(a, b, c, d T) bool {
  2900  				if (a >= b) || !(c <= d) {
  2901  					return true
  2902  				}
  2903  				return false
  2904  			},
  2905  			cmp1Expr:    "a >= b",
  2906  			cmp2Expr:    "c <= d",
  2907  			logicalExpr: "(a >= b) || !(c <= d)",
  2908  		},
  2909  		{
  2910  			cmp1:    func(a, b T) bool { return a >= b },
  2911  			cmp2:    func(a, b T) bool { return a <= b },
  2912  			combine: func(x, y bool) bool { return !(x) || (y) },
  2913  			targetFunc: func(a, b, c, d T) bool {
  2914  				if !(a >= b) || (c <= d) {
  2915  					return true
  2916  				}
  2917  				return false
  2918  			},
  2919  			cmp1Expr:    "a >= b",
  2920  			cmp2Expr:    "c <= d",
  2921  			logicalExpr: "!(a >= b) || (c <= d)",
  2922  		},
  2923  		{
  2924  			cmp1:    func(a, b T) bool { return a >= b },
  2925  			cmp2:    func(a, b T) bool { return a <= b },
  2926  			combine: func(x, y bool) bool { return !(x) || !(y) },
  2927  			targetFunc: func(a, b, c, d T) bool {
  2928  				if !(a >= b) || !(c <= d) {
  2929  					return true
  2930  				}
  2931  				return false
  2932  			},
  2933  			cmp1Expr:    "a >= b",
  2934  			cmp2Expr:    "c <= d",
  2935  			logicalExpr: "!(a >= b) || !(c <= d)",
  2936  		},
  2937  		{
  2938  			cmp1:    func(a, b T) bool { return a >= b },
  2939  			cmp2:    func(a, b T) bool { return a < b },
  2940  			combine: func(x, y bool) bool { return (x) && (y) },
  2941  			targetFunc: func(a, b, c, d T) bool {
  2942  				if (a >= b) && (c < d) {
  2943  					return true
  2944  				}
  2945  				return false
  2946  			},
  2947  			cmp1Expr:    "a >= b",
  2948  			cmp2Expr:    "c < d",
  2949  			logicalExpr: "(a >= b) && (c < d)",
  2950  		},
  2951  		{
  2952  			cmp1:    func(a, b T) bool { return a >= b },
  2953  			cmp2:    func(a, b T) bool { return a < b },
  2954  			combine: func(x, y bool) bool { return (x) && !(y) },
  2955  			targetFunc: func(a, b, c, d T) bool {
  2956  				if (a >= b) && !(c < d) {
  2957  					return true
  2958  				}
  2959  				return false
  2960  			},
  2961  			cmp1Expr:    "a >= b",
  2962  			cmp2Expr:    "c < d",
  2963  			logicalExpr: "(a >= b) && !(c < d)",
  2964  		},
  2965  		{
  2966  			cmp1:    func(a, b T) bool { return a >= b },
  2967  			cmp2:    func(a, b T) bool { return a < b },
  2968  			combine: func(x, y bool) bool { return !(x) && (y) },
  2969  			targetFunc: func(a, b, c, d T) bool {
  2970  				if !(a >= b) && (c < d) {
  2971  					return true
  2972  				}
  2973  				return false
  2974  			},
  2975  			cmp1Expr:    "a >= b",
  2976  			cmp2Expr:    "c < d",
  2977  			logicalExpr: "!(a >= b) && (c < d)",
  2978  		},
  2979  		{
  2980  			cmp1:    func(a, b T) bool { return a >= b },
  2981  			cmp2:    func(a, b T) bool { return a < b },
  2982  			combine: func(x, y bool) bool { return !(x) && !(y) },
  2983  			targetFunc: func(a, b, c, d T) bool {
  2984  				if !(a >= b) && !(c < d) {
  2985  					return true
  2986  				}
  2987  				return false
  2988  			},
  2989  			cmp1Expr:    "a >= b",
  2990  			cmp2Expr:    "c < d",
  2991  			logicalExpr: "!(a >= b) && !(c < d)",
  2992  		},
  2993  		{
  2994  			cmp1:    func(a, b T) bool { return a >= b },
  2995  			cmp2:    func(a, b T) bool { return a < b },
  2996  			combine: func(x, y bool) bool { return (x) || (y) },
  2997  			targetFunc: func(a, b, c, d T) bool {
  2998  				if (a >= b) || (c < d) {
  2999  					return true
  3000  				}
  3001  				return false
  3002  			},
  3003  			cmp1Expr:    "a >= b",
  3004  			cmp2Expr:    "c < d",
  3005  			logicalExpr: "(a >= b) || (c < d)",
  3006  		},
  3007  		{
  3008  			cmp1:    func(a, b T) bool { return a >= b },
  3009  			cmp2:    func(a, b T) bool { return a < b },
  3010  			combine: func(x, y bool) bool { return (x) || !(y) },
  3011  			targetFunc: func(a, b, c, d T) bool {
  3012  				if (a >= b) || !(c < d) {
  3013  					return true
  3014  				}
  3015  				return false
  3016  			},
  3017  			cmp1Expr:    "a >= b",
  3018  			cmp2Expr:    "c < d",
  3019  			logicalExpr: "(a >= b) || !(c < d)",
  3020  		},
  3021  		{
  3022  			cmp1:    func(a, b T) bool { return a >= b },
  3023  			cmp2:    func(a, b T) bool { return a < b },
  3024  			combine: func(x, y bool) bool { return !(x) || (y) },
  3025  			targetFunc: func(a, b, c, d T) bool {
  3026  				if !(a >= b) || (c < d) {
  3027  					return true
  3028  				}
  3029  				return false
  3030  			},
  3031  			cmp1Expr:    "a >= b",
  3032  			cmp2Expr:    "c < d",
  3033  			logicalExpr: "!(a >= b) || (c < d)",
  3034  		},
  3035  		{
  3036  			cmp1:    func(a, b T) bool { return a >= b },
  3037  			cmp2:    func(a, b T) bool { return a < b },
  3038  			combine: func(x, y bool) bool { return !(x) || !(y) },
  3039  			targetFunc: func(a, b, c, d T) bool {
  3040  				if !(a >= b) || !(c < d) {
  3041  					return true
  3042  				}
  3043  				return false
  3044  			},
  3045  			cmp1Expr:    "a >= b",
  3046  			cmp2Expr:    "c < d",
  3047  			logicalExpr: "!(a >= b) || !(c < d)",
  3048  		},
  3049  		{
  3050  			cmp1:    func(a, b T) bool { return a >= b },
  3051  			cmp2:    func(a, b T) bool { return a != b },
  3052  			combine: func(x, y bool) bool { return (x) && (y) },
  3053  			targetFunc: func(a, b, c, d T) bool {
  3054  				if (a >= b) && (c != d) {
  3055  					return true
  3056  				}
  3057  				return false
  3058  			},
  3059  			cmp1Expr:    "a >= b",
  3060  			cmp2Expr:    "c != d",
  3061  			logicalExpr: "(a >= b) && (c != d)",
  3062  		},
  3063  		{
  3064  			cmp1:    func(a, b T) bool { return a >= b },
  3065  			cmp2:    func(a, b T) bool { return a != b },
  3066  			combine: func(x, y bool) bool { return (x) && !(y) },
  3067  			targetFunc: func(a, b, c, d T) bool {
  3068  				if (a >= b) && !(c != d) {
  3069  					return true
  3070  				}
  3071  				return false
  3072  			},
  3073  			cmp1Expr:    "a >= b",
  3074  			cmp2Expr:    "c != d",
  3075  			logicalExpr: "(a >= b) && !(c != d)",
  3076  		},
  3077  		{
  3078  			cmp1:    func(a, b T) bool { return a >= b },
  3079  			cmp2:    func(a, b T) bool { return a != b },
  3080  			combine: func(x, y bool) bool { return !(x) && (y) },
  3081  			targetFunc: func(a, b, c, d T) bool {
  3082  				if !(a >= b) && (c != d) {
  3083  					return true
  3084  				}
  3085  				return false
  3086  			},
  3087  			cmp1Expr:    "a >= b",
  3088  			cmp2Expr:    "c != d",
  3089  			logicalExpr: "!(a >= b) && (c != d)",
  3090  		},
  3091  		{
  3092  			cmp1:    func(a, b T) bool { return a >= b },
  3093  			cmp2:    func(a, b T) bool { return a != b },
  3094  			combine: func(x, y bool) bool { return !(x) && !(y) },
  3095  			targetFunc: func(a, b, c, d T) bool {
  3096  				if !(a >= b) && !(c != d) {
  3097  					return true
  3098  				}
  3099  				return false
  3100  			},
  3101  			cmp1Expr:    "a >= b",
  3102  			cmp2Expr:    "c != d",
  3103  			logicalExpr: "!(a >= b) && !(c != d)",
  3104  		},
  3105  		{
  3106  			cmp1:    func(a, b T) bool { return a >= b },
  3107  			cmp2:    func(a, b T) bool { return a != b },
  3108  			combine: func(x, y bool) bool { return (x) || (y) },
  3109  			targetFunc: func(a, b, c, d T) bool {
  3110  				if (a >= b) || (c != d) {
  3111  					return true
  3112  				}
  3113  				return false
  3114  			},
  3115  			cmp1Expr:    "a >= b",
  3116  			cmp2Expr:    "c != d",
  3117  			logicalExpr: "(a >= b) || (c != d)",
  3118  		},
  3119  		{
  3120  			cmp1:    func(a, b T) bool { return a >= b },
  3121  			cmp2:    func(a, b T) bool { return a != b },
  3122  			combine: func(x, y bool) bool { return (x) || !(y) },
  3123  			targetFunc: func(a, b, c, d T) bool {
  3124  				if (a >= b) || !(c != d) {
  3125  					return true
  3126  				}
  3127  				return false
  3128  			},
  3129  			cmp1Expr:    "a >= b",
  3130  			cmp2Expr:    "c != d",
  3131  			logicalExpr: "(a >= b) || !(c != d)",
  3132  		},
  3133  		{
  3134  			cmp1:    func(a, b T) bool { return a >= b },
  3135  			cmp2:    func(a, b T) bool { return a != b },
  3136  			combine: func(x, y bool) bool { return !(x) || (y) },
  3137  			targetFunc: func(a, b, c, d T) bool {
  3138  				if !(a >= b) || (c != d) {
  3139  					return true
  3140  				}
  3141  				return false
  3142  			},
  3143  			cmp1Expr:    "a >= b",
  3144  			cmp2Expr:    "c != d",
  3145  			logicalExpr: "!(a >= b) || (c != d)",
  3146  		},
  3147  		{
  3148  			cmp1:    func(a, b T) bool { return a >= b },
  3149  			cmp2:    func(a, b T) bool { return a != b },
  3150  			combine: func(x, y bool) bool { return !(x) || !(y) },
  3151  			targetFunc: func(a, b, c, d T) bool {
  3152  				if !(a >= b) || !(c != d) {
  3153  					return true
  3154  				}
  3155  				return false
  3156  			},
  3157  			cmp1Expr:    "a >= b",
  3158  			cmp2Expr:    "c != d",
  3159  			logicalExpr: "!(a >= b) || !(c != d)",
  3160  		},
  3161  		{
  3162  			cmp1:    func(a, b T) bool { return a >= b },
  3163  			cmp2:    func(a, b T) bool { return a >= b },
  3164  			combine: func(x, y bool) bool { return (x) && (y) },
  3165  			targetFunc: func(a, b, c, d T) bool {
  3166  				if (a >= b) && (c >= d) {
  3167  					return true
  3168  				}
  3169  				return false
  3170  			},
  3171  			cmp1Expr:    "a >= b",
  3172  			cmp2Expr:    "c >= d",
  3173  			logicalExpr: "(a >= b) && (c >= d)",
  3174  		},
  3175  		{
  3176  			cmp1:    func(a, b T) bool { return a >= b },
  3177  			cmp2:    func(a, b T) bool { return a >= b },
  3178  			combine: func(x, y bool) bool { return (x) && !(y) },
  3179  			targetFunc: func(a, b, c, d T) bool {
  3180  				if (a >= b) && !(c >= d) {
  3181  					return true
  3182  				}
  3183  				return false
  3184  			},
  3185  			cmp1Expr:    "a >= b",
  3186  			cmp2Expr:    "c >= d",
  3187  			logicalExpr: "(a >= b) && !(c >= d)",
  3188  		},
  3189  		{
  3190  			cmp1:    func(a, b T) bool { return a >= b },
  3191  			cmp2:    func(a, b T) bool { return a >= b },
  3192  			combine: func(x, y bool) bool { return !(x) && (y) },
  3193  			targetFunc: func(a, b, c, d T) bool {
  3194  				if !(a >= b) && (c >= d) {
  3195  					return true
  3196  				}
  3197  				return false
  3198  			},
  3199  			cmp1Expr:    "a >= b",
  3200  			cmp2Expr:    "c >= d",
  3201  			logicalExpr: "!(a >= b) && (c >= d)",
  3202  		},
  3203  		{
  3204  			cmp1:    func(a, b T) bool { return a >= b },
  3205  			cmp2:    func(a, b T) bool { return a >= b },
  3206  			combine: func(x, y bool) bool { return !(x) && !(y) },
  3207  			targetFunc: func(a, b, c, d T) bool {
  3208  				if !(a >= b) && !(c >= d) {
  3209  					return true
  3210  				}
  3211  				return false
  3212  			},
  3213  			cmp1Expr:    "a >= b",
  3214  			cmp2Expr:    "c >= d",
  3215  			logicalExpr: "!(a >= b) && !(c >= d)",
  3216  		},
  3217  		{
  3218  			cmp1:    func(a, b T) bool { return a >= b },
  3219  			cmp2:    func(a, b T) bool { return a >= b },
  3220  			combine: func(x, y bool) bool { return (x) || (y) },
  3221  			targetFunc: func(a, b, c, d T) bool {
  3222  				if (a >= b) || (c >= d) {
  3223  					return true
  3224  				}
  3225  				return false
  3226  			},
  3227  			cmp1Expr:    "a >= b",
  3228  			cmp2Expr:    "c >= d",
  3229  			logicalExpr: "(a >= b) || (c >= d)",
  3230  		},
  3231  		{
  3232  			cmp1:    func(a, b T) bool { return a >= b },
  3233  			cmp2:    func(a, b T) bool { return a >= b },
  3234  			combine: func(x, y bool) bool { return (x) || !(y) },
  3235  			targetFunc: func(a, b, c, d T) bool {
  3236  				if (a >= b) || !(c >= d) {
  3237  					return true
  3238  				}
  3239  				return false
  3240  			},
  3241  			cmp1Expr:    "a >= b",
  3242  			cmp2Expr:    "c >= d",
  3243  			logicalExpr: "(a >= b) || !(c >= d)",
  3244  		},
  3245  		{
  3246  			cmp1:    func(a, b T) bool { return a >= b },
  3247  			cmp2:    func(a, b T) bool { return a >= b },
  3248  			combine: func(x, y bool) bool { return !(x) || (y) },
  3249  			targetFunc: func(a, b, c, d T) bool {
  3250  				if !(a >= b) || (c >= d) {
  3251  					return true
  3252  				}
  3253  				return false
  3254  			},
  3255  			cmp1Expr:    "a >= b",
  3256  			cmp2Expr:    "c >= d",
  3257  			logicalExpr: "!(a >= b) || (c >= d)",
  3258  		},
  3259  		{
  3260  			cmp1:    func(a, b T) bool { return a >= b },
  3261  			cmp2:    func(a, b T) bool { return a >= b },
  3262  			combine: func(x, y bool) bool { return !(x) || !(y) },
  3263  			targetFunc: func(a, b, c, d T) bool {
  3264  				if !(a >= b) || !(c >= d) {
  3265  					return true
  3266  				}
  3267  				return false
  3268  			},
  3269  			cmp1Expr:    "a >= b",
  3270  			cmp2Expr:    "c >= d",
  3271  			logicalExpr: "!(a >= b) || !(c >= d)",
  3272  		},
  3273  		{
  3274  			cmp1:    func(a, b T) bool { return a >= b },
  3275  			cmp2:    func(a, b T) bool { return a > b },
  3276  			combine: func(x, y bool) bool { return (x) && (y) },
  3277  			targetFunc: func(a, b, c, d T) bool {
  3278  				if (a >= b) && (c > d) {
  3279  					return true
  3280  				}
  3281  				return false
  3282  			},
  3283  			cmp1Expr:    "a >= b",
  3284  			cmp2Expr:    "c > d",
  3285  			logicalExpr: "(a >= b) && (c > d)",
  3286  		},
  3287  		{
  3288  			cmp1:    func(a, b T) bool { return a >= b },
  3289  			cmp2:    func(a, b T) bool { return a > b },
  3290  			combine: func(x, y bool) bool { return (x) && !(y) },
  3291  			targetFunc: func(a, b, c, d T) bool {
  3292  				if (a >= b) && !(c > d) {
  3293  					return true
  3294  				}
  3295  				return false
  3296  			},
  3297  			cmp1Expr:    "a >= b",
  3298  			cmp2Expr:    "c > d",
  3299  			logicalExpr: "(a >= b) && !(c > d)",
  3300  		},
  3301  		{
  3302  			cmp1:    func(a, b T) bool { return a >= b },
  3303  			cmp2:    func(a, b T) bool { return a > b },
  3304  			combine: func(x, y bool) bool { return !(x) && (y) },
  3305  			targetFunc: func(a, b, c, d T) bool {
  3306  				if !(a >= b) && (c > d) {
  3307  					return true
  3308  				}
  3309  				return false
  3310  			},
  3311  			cmp1Expr:    "a >= b",
  3312  			cmp2Expr:    "c > d",
  3313  			logicalExpr: "!(a >= b) && (c > d)",
  3314  		},
  3315  		{
  3316  			cmp1:    func(a, b T) bool { return a >= b },
  3317  			cmp2:    func(a, b T) bool { return a > b },
  3318  			combine: func(x, y bool) bool { return !(x) && !(y) },
  3319  			targetFunc: func(a, b, c, d T) bool {
  3320  				if !(a >= b) && !(c > d) {
  3321  					return true
  3322  				}
  3323  				return false
  3324  			},
  3325  			cmp1Expr:    "a >= b",
  3326  			cmp2Expr:    "c > d",
  3327  			logicalExpr: "!(a >= b) && !(c > d)",
  3328  		},
  3329  		{
  3330  			cmp1:    func(a, b T) bool { return a >= b },
  3331  			cmp2:    func(a, b T) bool { return a > b },
  3332  			combine: func(x, y bool) bool { return (x) || (y) },
  3333  			targetFunc: func(a, b, c, d T) bool {
  3334  				if (a >= b) || (c > d) {
  3335  					return true
  3336  				}
  3337  				return false
  3338  			},
  3339  			cmp1Expr:    "a >= b",
  3340  			cmp2Expr:    "c > d",
  3341  			logicalExpr: "(a >= b) || (c > d)",
  3342  		},
  3343  		{
  3344  			cmp1:    func(a, b T) bool { return a >= b },
  3345  			cmp2:    func(a, b T) bool { return a > b },
  3346  			combine: func(x, y bool) bool { return (x) || !(y) },
  3347  			targetFunc: func(a, b, c, d T) bool {
  3348  				if (a >= b) || !(c > d) {
  3349  					return true
  3350  				}
  3351  				return false
  3352  			},
  3353  			cmp1Expr:    "a >= b",
  3354  			cmp2Expr:    "c > d",
  3355  			logicalExpr: "(a >= b) || !(c > d)",
  3356  		},
  3357  		{
  3358  			cmp1:    func(a, b T) bool { return a >= b },
  3359  			cmp2:    func(a, b T) bool { return a > b },
  3360  			combine: func(x, y bool) bool { return !(x) || (y) },
  3361  			targetFunc: func(a, b, c, d T) bool {
  3362  				if !(a >= b) || (c > d) {
  3363  					return true
  3364  				}
  3365  				return false
  3366  			},
  3367  			cmp1Expr:    "a >= b",
  3368  			cmp2Expr:    "c > d",
  3369  			logicalExpr: "!(a >= b) || (c > d)",
  3370  		},
  3371  		{
  3372  			cmp1:    func(a, b T) bool { return a >= b },
  3373  			cmp2:    func(a, b T) bool { return a > b },
  3374  			combine: func(x, y bool) bool { return !(x) || !(y) },
  3375  			targetFunc: func(a, b, c, d T) bool {
  3376  				if !(a >= b) || !(c > d) {
  3377  					return true
  3378  				}
  3379  				return false
  3380  			},
  3381  			cmp1Expr:    "a >= b",
  3382  			cmp2Expr:    "c > d",
  3383  			logicalExpr: "!(a >= b) || !(c > d)",
  3384  		},
  3385  		{
  3386  			cmp1:    func(a, b T) bool { return a > b },
  3387  			cmp2:    func(a, b T) bool { return a == b },
  3388  			combine: func(x, y bool) bool { return (x) && (y) },
  3389  			targetFunc: func(a, b, c, d T) bool {
  3390  				if (a > b) && (c == d) {
  3391  					return true
  3392  				}
  3393  				return false
  3394  			},
  3395  			cmp1Expr:    "a > b",
  3396  			cmp2Expr:    "c == d",
  3397  			logicalExpr: "(a > b) && (c == d)",
  3398  		},
  3399  		{
  3400  			cmp1:    func(a, b T) bool { return a > b },
  3401  			cmp2:    func(a, b T) bool { return a == b },
  3402  			combine: func(x, y bool) bool { return (x) && !(y) },
  3403  			targetFunc: func(a, b, c, d T) bool {
  3404  				if (a > b) && !(c == d) {
  3405  					return true
  3406  				}
  3407  				return false
  3408  			},
  3409  			cmp1Expr:    "a > b",
  3410  			cmp2Expr:    "c == d",
  3411  			logicalExpr: "(a > b) && !(c == d)",
  3412  		},
  3413  		{
  3414  			cmp1:    func(a, b T) bool { return a > b },
  3415  			cmp2:    func(a, b T) bool { return a == b },
  3416  			combine: func(x, y bool) bool { return !(x) && (y) },
  3417  			targetFunc: func(a, b, c, d T) bool {
  3418  				if !(a > b) && (c == d) {
  3419  					return true
  3420  				}
  3421  				return false
  3422  			},
  3423  			cmp1Expr:    "a > b",
  3424  			cmp2Expr:    "c == d",
  3425  			logicalExpr: "!(a > b) && (c == d)",
  3426  		},
  3427  		{
  3428  			cmp1:    func(a, b T) bool { return a > b },
  3429  			cmp2:    func(a, b T) bool { return a == b },
  3430  			combine: func(x, y bool) bool { return !(x) && !(y) },
  3431  			targetFunc: func(a, b, c, d T) bool {
  3432  				if !(a > b) && !(c == d) {
  3433  					return true
  3434  				}
  3435  				return false
  3436  			},
  3437  			cmp1Expr:    "a > b",
  3438  			cmp2Expr:    "c == d",
  3439  			logicalExpr: "!(a > b) && !(c == d)",
  3440  		},
  3441  		{
  3442  			cmp1:    func(a, b T) bool { return a > b },
  3443  			cmp2:    func(a, b T) bool { return a == b },
  3444  			combine: func(x, y bool) bool { return (x) || (y) },
  3445  			targetFunc: func(a, b, c, d T) bool {
  3446  				if (a > b) || (c == d) {
  3447  					return true
  3448  				}
  3449  				return false
  3450  			},
  3451  			cmp1Expr:    "a > b",
  3452  			cmp2Expr:    "c == d",
  3453  			logicalExpr: "(a > b) || (c == d)",
  3454  		},
  3455  		{
  3456  			cmp1:    func(a, b T) bool { return a > b },
  3457  			cmp2:    func(a, b T) bool { return a == b },
  3458  			combine: func(x, y bool) bool { return (x) || !(y) },
  3459  			targetFunc: func(a, b, c, d T) bool {
  3460  				if (a > b) || !(c == d) {
  3461  					return true
  3462  				}
  3463  				return false
  3464  			},
  3465  			cmp1Expr:    "a > b",
  3466  			cmp2Expr:    "c == d",
  3467  			logicalExpr: "(a > b) || !(c == d)",
  3468  		},
  3469  		{
  3470  			cmp1:    func(a, b T) bool { return a > b },
  3471  			cmp2:    func(a, b T) bool { return a == b },
  3472  			combine: func(x, y bool) bool { return !(x) || (y) },
  3473  			targetFunc: func(a, b, c, d T) bool {
  3474  				if !(a > b) || (c == d) {
  3475  					return true
  3476  				}
  3477  				return false
  3478  			},
  3479  			cmp1Expr:    "a > b",
  3480  			cmp2Expr:    "c == d",
  3481  			logicalExpr: "!(a > b) || (c == d)",
  3482  		},
  3483  		{
  3484  			cmp1:    func(a, b T) bool { return a > b },
  3485  			cmp2:    func(a, b T) bool { return a == b },
  3486  			combine: func(x, y bool) bool { return !(x) || !(y) },
  3487  			targetFunc: func(a, b, c, d T) bool {
  3488  				if !(a > b) || !(c == d) {
  3489  					return true
  3490  				}
  3491  				return false
  3492  			},
  3493  			cmp1Expr:    "a > b",
  3494  			cmp2Expr:    "c == d",
  3495  			logicalExpr: "!(a > b) || !(c == d)",
  3496  		},
  3497  		{
  3498  			cmp1:    func(a, b T) bool { return a > b },
  3499  			cmp2:    func(a, b T) bool { return a <= b },
  3500  			combine: func(x, y bool) bool { return (x) && (y) },
  3501  			targetFunc: func(a, b, c, d T) bool {
  3502  				if (a > b) && (c <= d) {
  3503  					return true
  3504  				}
  3505  				return false
  3506  			},
  3507  			cmp1Expr:    "a > b",
  3508  			cmp2Expr:    "c <= d",
  3509  			logicalExpr: "(a > b) && (c <= d)",
  3510  		},
  3511  		{
  3512  			cmp1:    func(a, b T) bool { return a > b },
  3513  			cmp2:    func(a, b T) bool { return a <= b },
  3514  			combine: func(x, y bool) bool { return (x) && !(y) },
  3515  			targetFunc: func(a, b, c, d T) bool {
  3516  				if (a > b) && !(c <= d) {
  3517  					return true
  3518  				}
  3519  				return false
  3520  			},
  3521  			cmp1Expr:    "a > b",
  3522  			cmp2Expr:    "c <= d",
  3523  			logicalExpr: "(a > b) && !(c <= d)",
  3524  		},
  3525  		{
  3526  			cmp1:    func(a, b T) bool { return a > b },
  3527  			cmp2:    func(a, b T) bool { return a <= b },
  3528  			combine: func(x, y bool) bool { return !(x) && (y) },
  3529  			targetFunc: func(a, b, c, d T) bool {
  3530  				if !(a > b) && (c <= d) {
  3531  					return true
  3532  				}
  3533  				return false
  3534  			},
  3535  			cmp1Expr:    "a > b",
  3536  			cmp2Expr:    "c <= d",
  3537  			logicalExpr: "!(a > b) && (c <= d)",
  3538  		},
  3539  		{
  3540  			cmp1:    func(a, b T) bool { return a > b },
  3541  			cmp2:    func(a, b T) bool { return a <= b },
  3542  			combine: func(x, y bool) bool { return !(x) && !(y) },
  3543  			targetFunc: func(a, b, c, d T) bool {
  3544  				if !(a > b) && !(c <= d) {
  3545  					return true
  3546  				}
  3547  				return false
  3548  			},
  3549  			cmp1Expr:    "a > b",
  3550  			cmp2Expr:    "c <= d",
  3551  			logicalExpr: "!(a > b) && !(c <= d)",
  3552  		},
  3553  		{
  3554  			cmp1:    func(a, b T) bool { return a > b },
  3555  			cmp2:    func(a, b T) bool { return a <= b },
  3556  			combine: func(x, y bool) bool { return (x) || (y) },
  3557  			targetFunc: func(a, b, c, d T) bool {
  3558  				if (a > b) || (c <= d) {
  3559  					return true
  3560  				}
  3561  				return false
  3562  			},
  3563  			cmp1Expr:    "a > b",
  3564  			cmp2Expr:    "c <= d",
  3565  			logicalExpr: "(a > b) || (c <= d)",
  3566  		},
  3567  		{
  3568  			cmp1:    func(a, b T) bool { return a > b },
  3569  			cmp2:    func(a, b T) bool { return a <= b },
  3570  			combine: func(x, y bool) bool { return (x) || !(y) },
  3571  			targetFunc: func(a, b, c, d T) bool {
  3572  				if (a > b) || !(c <= d) {
  3573  					return true
  3574  				}
  3575  				return false
  3576  			},
  3577  			cmp1Expr:    "a > b",
  3578  			cmp2Expr:    "c <= d",
  3579  			logicalExpr: "(a > b) || !(c <= d)",
  3580  		},
  3581  		{
  3582  			cmp1:    func(a, b T) bool { return a > b },
  3583  			cmp2:    func(a, b T) bool { return a <= b },
  3584  			combine: func(x, y bool) bool { return !(x) || (y) },
  3585  			targetFunc: func(a, b, c, d T) bool {
  3586  				if !(a > b) || (c <= d) {
  3587  					return true
  3588  				}
  3589  				return false
  3590  			},
  3591  			cmp1Expr:    "a > b",
  3592  			cmp2Expr:    "c <= d",
  3593  			logicalExpr: "!(a > b) || (c <= d)",
  3594  		},
  3595  		{
  3596  			cmp1:    func(a, b T) bool { return a > b },
  3597  			cmp2:    func(a, b T) bool { return a <= b },
  3598  			combine: func(x, y bool) bool { return !(x) || !(y) },
  3599  			targetFunc: func(a, b, c, d T) bool {
  3600  				if !(a > b) || !(c <= d) {
  3601  					return true
  3602  				}
  3603  				return false
  3604  			},
  3605  			cmp1Expr:    "a > b",
  3606  			cmp2Expr:    "c <= d",
  3607  			logicalExpr: "!(a > b) || !(c <= d)",
  3608  		},
  3609  		{
  3610  			cmp1:    func(a, b T) bool { return a > b },
  3611  			cmp2:    func(a, b T) bool { return a < b },
  3612  			combine: func(x, y bool) bool { return (x) && (y) },
  3613  			targetFunc: func(a, b, c, d T) bool {
  3614  				if (a > b) && (c < d) {
  3615  					return true
  3616  				}
  3617  				return false
  3618  			},
  3619  			cmp1Expr:    "a > b",
  3620  			cmp2Expr:    "c < d",
  3621  			logicalExpr: "(a > b) && (c < d)",
  3622  		},
  3623  		{
  3624  			cmp1:    func(a, b T) bool { return a > b },
  3625  			cmp2:    func(a, b T) bool { return a < b },
  3626  			combine: func(x, y bool) bool { return (x) && !(y) },
  3627  			targetFunc: func(a, b, c, d T) bool {
  3628  				if (a > b) && !(c < d) {
  3629  					return true
  3630  				}
  3631  				return false
  3632  			},
  3633  			cmp1Expr:    "a > b",
  3634  			cmp2Expr:    "c < d",
  3635  			logicalExpr: "(a > b) && !(c < d)",
  3636  		},
  3637  		{
  3638  			cmp1:    func(a, b T) bool { return a > b },
  3639  			cmp2:    func(a, b T) bool { return a < b },
  3640  			combine: func(x, y bool) bool { return !(x) && (y) },
  3641  			targetFunc: func(a, b, c, d T) bool {
  3642  				if !(a > b) && (c < d) {
  3643  					return true
  3644  				}
  3645  				return false
  3646  			},
  3647  			cmp1Expr:    "a > b",
  3648  			cmp2Expr:    "c < d",
  3649  			logicalExpr: "!(a > b) && (c < d)",
  3650  		},
  3651  		{
  3652  			cmp1:    func(a, b T) bool { return a > b },
  3653  			cmp2:    func(a, b T) bool { return a < b },
  3654  			combine: func(x, y bool) bool { return !(x) && !(y) },
  3655  			targetFunc: func(a, b, c, d T) bool {
  3656  				if !(a > b) && !(c < d) {
  3657  					return true
  3658  				}
  3659  				return false
  3660  			},
  3661  			cmp1Expr:    "a > b",
  3662  			cmp2Expr:    "c < d",
  3663  			logicalExpr: "!(a > b) && !(c < d)",
  3664  		},
  3665  		{
  3666  			cmp1:    func(a, b T) bool { return a > b },
  3667  			cmp2:    func(a, b T) bool { return a < b },
  3668  			combine: func(x, y bool) bool { return (x) || (y) },
  3669  			targetFunc: func(a, b, c, d T) bool {
  3670  				if (a > b) || (c < d) {
  3671  					return true
  3672  				}
  3673  				return false
  3674  			},
  3675  			cmp1Expr:    "a > b",
  3676  			cmp2Expr:    "c < d",
  3677  			logicalExpr: "(a > b) || (c < d)",
  3678  		},
  3679  		{
  3680  			cmp1:    func(a, b T) bool { return a > b },
  3681  			cmp2:    func(a, b T) bool { return a < b },
  3682  			combine: func(x, y bool) bool { return (x) || !(y) },
  3683  			targetFunc: func(a, b, c, d T) bool {
  3684  				if (a > b) || !(c < d) {
  3685  					return true
  3686  				}
  3687  				return false
  3688  			},
  3689  			cmp1Expr:    "a > b",
  3690  			cmp2Expr:    "c < d",
  3691  			logicalExpr: "(a > b) || !(c < d)",
  3692  		},
  3693  		{
  3694  			cmp1:    func(a, b T) bool { return a > b },
  3695  			cmp2:    func(a, b T) bool { return a < b },
  3696  			combine: func(x, y bool) bool { return !(x) || (y) },
  3697  			targetFunc: func(a, b, c, d T) bool {
  3698  				if !(a > b) || (c < d) {
  3699  					return true
  3700  				}
  3701  				return false
  3702  			},
  3703  			cmp1Expr:    "a > b",
  3704  			cmp2Expr:    "c < d",
  3705  			logicalExpr: "!(a > b) || (c < d)",
  3706  		},
  3707  		{
  3708  			cmp1:    func(a, b T) bool { return a > b },
  3709  			cmp2:    func(a, b T) bool { return a < b },
  3710  			combine: func(x, y bool) bool { return !(x) || !(y) },
  3711  			targetFunc: func(a, b, c, d T) bool {
  3712  				if !(a > b) || !(c < d) {
  3713  					return true
  3714  				}
  3715  				return false
  3716  			},
  3717  			cmp1Expr:    "a > b",
  3718  			cmp2Expr:    "c < d",
  3719  			logicalExpr: "!(a > b) || !(c < d)",
  3720  		},
  3721  		{
  3722  			cmp1:    func(a, b T) bool { return a > b },
  3723  			cmp2:    func(a, b T) bool { return a != b },
  3724  			combine: func(x, y bool) bool { return (x) && (y) },
  3725  			targetFunc: func(a, b, c, d T) bool {
  3726  				if (a > b) && (c != d) {
  3727  					return true
  3728  				}
  3729  				return false
  3730  			},
  3731  			cmp1Expr:    "a > b",
  3732  			cmp2Expr:    "c != d",
  3733  			logicalExpr: "(a > b) && (c != d)",
  3734  		},
  3735  		{
  3736  			cmp1:    func(a, b T) bool { return a > b },
  3737  			cmp2:    func(a, b T) bool { return a != b },
  3738  			combine: func(x, y bool) bool { return (x) && !(y) },
  3739  			targetFunc: func(a, b, c, d T) bool {
  3740  				if (a > b) && !(c != d) {
  3741  					return true
  3742  				}
  3743  				return false
  3744  			},
  3745  			cmp1Expr:    "a > b",
  3746  			cmp2Expr:    "c != d",
  3747  			logicalExpr: "(a > b) && !(c != d)",
  3748  		},
  3749  		{
  3750  			cmp1:    func(a, b T) bool { return a > b },
  3751  			cmp2:    func(a, b T) bool { return a != b },
  3752  			combine: func(x, y bool) bool { return !(x) && (y) },
  3753  			targetFunc: func(a, b, c, d T) bool {
  3754  				if !(a > b) && (c != d) {
  3755  					return true
  3756  				}
  3757  				return false
  3758  			},
  3759  			cmp1Expr:    "a > b",
  3760  			cmp2Expr:    "c != d",
  3761  			logicalExpr: "!(a > b) && (c != d)",
  3762  		},
  3763  		{
  3764  			cmp1:    func(a, b T) bool { return a > b },
  3765  			cmp2:    func(a, b T) bool { return a != b },
  3766  			combine: func(x, y bool) bool { return !(x) && !(y) },
  3767  			targetFunc: func(a, b, c, d T) bool {
  3768  				if !(a > b) && !(c != d) {
  3769  					return true
  3770  				}
  3771  				return false
  3772  			},
  3773  			cmp1Expr:    "a > b",
  3774  			cmp2Expr:    "c != d",
  3775  			logicalExpr: "!(a > b) && !(c != d)",
  3776  		},
  3777  		{
  3778  			cmp1:    func(a, b T) bool { return a > b },
  3779  			cmp2:    func(a, b T) bool { return a != b },
  3780  			combine: func(x, y bool) bool { return (x) || (y) },
  3781  			targetFunc: func(a, b, c, d T) bool {
  3782  				if (a > b) || (c != d) {
  3783  					return true
  3784  				}
  3785  				return false
  3786  			},
  3787  			cmp1Expr:    "a > b",
  3788  			cmp2Expr:    "c != d",
  3789  			logicalExpr: "(a > b) || (c != d)",
  3790  		},
  3791  		{
  3792  			cmp1:    func(a, b T) bool { return a > b },
  3793  			cmp2:    func(a, b T) bool { return a != b },
  3794  			combine: func(x, y bool) bool { return (x) || !(y) },
  3795  			targetFunc: func(a, b, c, d T) bool {
  3796  				if (a > b) || !(c != d) {
  3797  					return true
  3798  				}
  3799  				return false
  3800  			},
  3801  			cmp1Expr:    "a > b",
  3802  			cmp2Expr:    "c != d",
  3803  			logicalExpr: "(a > b) || !(c != d)",
  3804  		},
  3805  		{
  3806  			cmp1:    func(a, b T) bool { return a > b },
  3807  			cmp2:    func(a, b T) bool { return a != b },
  3808  			combine: func(x, y bool) bool { return !(x) || (y) },
  3809  			targetFunc: func(a, b, c, d T) bool {
  3810  				if !(a > b) || (c != d) {
  3811  					return true
  3812  				}
  3813  				return false
  3814  			},
  3815  			cmp1Expr:    "a > b",
  3816  			cmp2Expr:    "c != d",
  3817  			logicalExpr: "!(a > b) || (c != d)",
  3818  		},
  3819  		{
  3820  			cmp1:    func(a, b T) bool { return a > b },
  3821  			cmp2:    func(a, b T) bool { return a != b },
  3822  			combine: func(x, y bool) bool { return !(x) || !(y) },
  3823  			targetFunc: func(a, b, c, d T) bool {
  3824  				if !(a > b) || !(c != d) {
  3825  					return true
  3826  				}
  3827  				return false
  3828  			},
  3829  			cmp1Expr:    "a > b",
  3830  			cmp2Expr:    "c != d",
  3831  			logicalExpr: "!(a > b) || !(c != d)",
  3832  		},
  3833  		{
  3834  			cmp1:    func(a, b T) bool { return a > b },
  3835  			cmp2:    func(a, b T) bool { return a >= b },
  3836  			combine: func(x, y bool) bool { return (x) && (y) },
  3837  			targetFunc: func(a, b, c, d T) bool {
  3838  				if (a > b) && (c >= d) {
  3839  					return true
  3840  				}
  3841  				return false
  3842  			},
  3843  			cmp1Expr:    "a > b",
  3844  			cmp2Expr:    "c >= d",
  3845  			logicalExpr: "(a > b) && (c >= d)",
  3846  		},
  3847  		{
  3848  			cmp1:    func(a, b T) bool { return a > b },
  3849  			cmp2:    func(a, b T) bool { return a >= b },
  3850  			combine: func(x, y bool) bool { return (x) && !(y) },
  3851  			targetFunc: func(a, b, c, d T) bool {
  3852  				if (a > b) && !(c >= d) {
  3853  					return true
  3854  				}
  3855  				return false
  3856  			},
  3857  			cmp1Expr:    "a > b",
  3858  			cmp2Expr:    "c >= d",
  3859  			logicalExpr: "(a > b) && !(c >= d)",
  3860  		},
  3861  		{
  3862  			cmp1:    func(a, b T) bool { return a > b },
  3863  			cmp2:    func(a, b T) bool { return a >= b },
  3864  			combine: func(x, y bool) bool { return !(x) && (y) },
  3865  			targetFunc: func(a, b, c, d T) bool {
  3866  				if !(a > b) && (c >= d) {
  3867  					return true
  3868  				}
  3869  				return false
  3870  			},
  3871  			cmp1Expr:    "a > b",
  3872  			cmp2Expr:    "c >= d",
  3873  			logicalExpr: "!(a > b) && (c >= d)",
  3874  		},
  3875  		{
  3876  			cmp1:    func(a, b T) bool { return a > b },
  3877  			cmp2:    func(a, b T) bool { return a >= b },
  3878  			combine: func(x, y bool) bool { return !(x) && !(y) },
  3879  			targetFunc: func(a, b, c, d T) bool {
  3880  				if !(a > b) && !(c >= d) {
  3881  					return true
  3882  				}
  3883  				return false
  3884  			},
  3885  			cmp1Expr:    "a > b",
  3886  			cmp2Expr:    "c >= d",
  3887  			logicalExpr: "!(a > b) && !(c >= d)",
  3888  		},
  3889  		{
  3890  			cmp1:    func(a, b T) bool { return a > b },
  3891  			cmp2:    func(a, b T) bool { return a >= b },
  3892  			combine: func(x, y bool) bool { return (x) || (y) },
  3893  			targetFunc: func(a, b, c, d T) bool {
  3894  				if (a > b) || (c >= d) {
  3895  					return true
  3896  				}
  3897  				return false
  3898  			},
  3899  			cmp1Expr:    "a > b",
  3900  			cmp2Expr:    "c >= d",
  3901  			logicalExpr: "(a > b) || (c >= d)",
  3902  		},
  3903  		{
  3904  			cmp1:    func(a, b T) bool { return a > b },
  3905  			cmp2:    func(a, b T) bool { return a >= b },
  3906  			combine: func(x, y bool) bool { return (x) || !(y) },
  3907  			targetFunc: func(a, b, c, d T) bool {
  3908  				if (a > b) || !(c >= d) {
  3909  					return true
  3910  				}
  3911  				return false
  3912  			},
  3913  			cmp1Expr:    "a > b",
  3914  			cmp2Expr:    "c >= d",
  3915  			logicalExpr: "(a > b) || !(c >= d)",
  3916  		},
  3917  		{
  3918  			cmp1:    func(a, b T) bool { return a > b },
  3919  			cmp2:    func(a, b T) bool { return a >= b },
  3920  			combine: func(x, y bool) bool { return !(x) || (y) },
  3921  			targetFunc: func(a, b, c, d T) bool {
  3922  				if !(a > b) || (c >= d) {
  3923  					return true
  3924  				}
  3925  				return false
  3926  			},
  3927  			cmp1Expr:    "a > b",
  3928  			cmp2Expr:    "c >= d",
  3929  			logicalExpr: "!(a > b) || (c >= d)",
  3930  		},
  3931  		{
  3932  			cmp1:    func(a, b T) bool { return a > b },
  3933  			cmp2:    func(a, b T) bool { return a >= b },
  3934  			combine: func(x, y bool) bool { return !(x) || !(y) },
  3935  			targetFunc: func(a, b, c, d T) bool {
  3936  				if !(a > b) || !(c >= d) {
  3937  					return true
  3938  				}
  3939  				return false
  3940  			},
  3941  			cmp1Expr:    "a > b",
  3942  			cmp2Expr:    "c >= d",
  3943  			logicalExpr: "!(a > b) || !(c >= d)",
  3944  		},
  3945  		{
  3946  			cmp1:    func(a, b T) bool { return a > b },
  3947  			cmp2:    func(a, b T) bool { return a > b },
  3948  			combine: func(x, y bool) bool { return (x) && (y) },
  3949  			targetFunc: func(a, b, c, d T) bool {
  3950  				if (a > b) && (c > d) {
  3951  					return true
  3952  				}
  3953  				return false
  3954  			},
  3955  			cmp1Expr:    "a > b",
  3956  			cmp2Expr:    "c > d",
  3957  			logicalExpr: "(a > b) && (c > d)",
  3958  		},
  3959  		{
  3960  			cmp1:    func(a, b T) bool { return a > b },
  3961  			cmp2:    func(a, b T) bool { return a > b },
  3962  			combine: func(x, y bool) bool { return (x) && !(y) },
  3963  			targetFunc: func(a, b, c, d T) bool {
  3964  				if (a > b) && !(c > d) {
  3965  					return true
  3966  				}
  3967  				return false
  3968  			},
  3969  			cmp1Expr:    "a > b",
  3970  			cmp2Expr:    "c > d",
  3971  			logicalExpr: "(a > b) && !(c > d)",
  3972  		},
  3973  		{
  3974  			cmp1:    func(a, b T) bool { return a > b },
  3975  			cmp2:    func(a, b T) bool { return a > b },
  3976  			combine: func(x, y bool) bool { return !(x) && (y) },
  3977  			targetFunc: func(a, b, c, d T) bool {
  3978  				if !(a > b) && (c > d) {
  3979  					return true
  3980  				}
  3981  				return false
  3982  			},
  3983  			cmp1Expr:    "a > b",
  3984  			cmp2Expr:    "c > d",
  3985  			logicalExpr: "!(a > b) && (c > d)",
  3986  		},
  3987  		{
  3988  			cmp1:    func(a, b T) bool { return a > b },
  3989  			cmp2:    func(a, b T) bool { return a > b },
  3990  			combine: func(x, y bool) bool { return !(x) && !(y) },
  3991  			targetFunc: func(a, b, c, d T) bool {
  3992  				if !(a > b) && !(c > d) {
  3993  					return true
  3994  				}
  3995  				return false
  3996  			},
  3997  			cmp1Expr:    "a > b",
  3998  			cmp2Expr:    "c > d",
  3999  			logicalExpr: "!(a > b) && !(c > d)",
  4000  		},
  4001  		{
  4002  			cmp1:    func(a, b T) bool { return a > b },
  4003  			cmp2:    func(a, b T) bool { return a > b },
  4004  			combine: func(x, y bool) bool { return (x) || (y) },
  4005  			targetFunc: func(a, b, c, d T) bool {
  4006  				if (a > b) || (c > d) {
  4007  					return true
  4008  				}
  4009  				return false
  4010  			},
  4011  			cmp1Expr:    "a > b",
  4012  			cmp2Expr:    "c > d",
  4013  			logicalExpr: "(a > b) || (c > d)",
  4014  		},
  4015  		{
  4016  			cmp1:    func(a, b T) bool { return a > b },
  4017  			cmp2:    func(a, b T) bool { return a > b },
  4018  			combine: func(x, y bool) bool { return (x) || !(y) },
  4019  			targetFunc: func(a, b, c, d T) bool {
  4020  				if (a > b) || !(c > d) {
  4021  					return true
  4022  				}
  4023  				return false
  4024  			},
  4025  			cmp1Expr:    "a > b",
  4026  			cmp2Expr:    "c > d",
  4027  			logicalExpr: "(a > b) || !(c > d)",
  4028  		},
  4029  		{
  4030  			cmp1:    func(a, b T) bool { return a > b },
  4031  			cmp2:    func(a, b T) bool { return a > b },
  4032  			combine: func(x, y bool) bool { return !(x) || (y) },
  4033  			targetFunc: func(a, b, c, d T) bool {
  4034  				if !(a > b) || (c > d) {
  4035  					return true
  4036  				}
  4037  				return false
  4038  			},
  4039  			cmp1Expr:    "a > b",
  4040  			cmp2Expr:    "c > d",
  4041  			logicalExpr: "!(a > b) || (c > d)",
  4042  		},
  4043  		{
  4044  			cmp1:    func(a, b T) bool { return a > b },
  4045  			cmp2:    func(a, b T) bool { return a > b },
  4046  			combine: func(x, y bool) bool { return !(x) || !(y) },
  4047  			targetFunc: func(a, b, c, d T) bool {
  4048  				if !(a > b) || !(c > d) {
  4049  					return true
  4050  				}
  4051  				return false
  4052  			},
  4053  			cmp1Expr:    "a > b",
  4054  			cmp2Expr:    "c > d",
  4055  			logicalExpr: "!(a > b) || !(c > d)",
  4056  		},
  4057  	}
  4058  }
  4059  
  4060  func TestInt8ConditionalCmpConst(t *testing.T) {
  4061  	testCases := generateTestCases[int8]()
  4062  	base := int8(1 << 6)
  4063  	values := [3]int8{base - 1, base, base + 1}
  4064  
  4065  	for _, tc := range testCases {
  4066  		a, c := base, base
  4067  		for _, b := range values {
  4068  			for _, d := range values {
  4069  				expected := tc.combine(tc.cmp1(a, b), tc.cmp2(c, d))
  4070  				actual := tc.targetFunc(a, b, c, d)
  4071  				if actual != expected {
  4072  					t.Errorf("conditional comparison failed:\n"+
  4073  						"  type: %T\n"+
  4074  						"  condition: %s\n"+
  4075  						"  values: a=%v, b=%v, c=%v, d=%v\n"+
  4076  						"  cmp1(a,b)=%v (%s)\n"+
  4077  						"  cmp2(c,d)=%v (%s)\n"+
  4078  						"  expected: combine(%v, %v)=%v\n"+
  4079  						"  actual: %v\n"+
  4080  						"  logical expression: %s",
  4081  						a,
  4082  						tc.logicalExpr,
  4083  						a, b, c, d,
  4084  						tc.cmp1(a, b), tc.cmp1Expr,
  4085  						tc.cmp2(c, d), tc.cmp2Expr,
  4086  						tc.cmp1(a, b), tc.cmp2(c, d), expected,
  4087  						actual,
  4088  						tc.logicalExpr)
  4089  				}
  4090  			}
  4091  		}
  4092  	}
  4093  }
  4094  
  4095  func TestUint8ConditionalCmpConst(t *testing.T) {
  4096  	testCases := generateTestCases[uint8]()
  4097  	base := uint8(1 << 6)
  4098  	values := [3]uint8{base - 1, base, base + 1}
  4099  
  4100  	for _, tc := range testCases {
  4101  		a, c := base, base
  4102  		for _, b := range values {
  4103  			for _, d := range values {
  4104  				expected := tc.combine(tc.cmp1(a, b), tc.cmp2(c, d))
  4105  				actual := tc.targetFunc(a, b, c, d)
  4106  				if actual != expected {
  4107  					t.Errorf("conditional comparison failed:\n"+
  4108  						"  type: %T\n"+
  4109  						"  condition: %s\n"+
  4110  						"  values: a=%v, b=%v, c=%v, d=%v\n"+
  4111  						"  cmp1(a,b)=%v (%s)\n"+
  4112  						"  cmp2(c,d)=%v (%s)\n"+
  4113  						"  expected: combine(%v, %v)=%v\n"+
  4114  						"  actual: %v\n"+
  4115  						"  logical expression: %s",
  4116  						a,
  4117  						tc.logicalExpr,
  4118  						a, b, c, d,
  4119  						tc.cmp1(a, b), tc.cmp1Expr,
  4120  						tc.cmp2(c, d), tc.cmp2Expr,
  4121  						tc.cmp1(a, b), tc.cmp2(c, d), expected,
  4122  						actual,
  4123  						tc.logicalExpr)
  4124  				}
  4125  			}
  4126  		}
  4127  	}
  4128  }
  4129  
  4130  func TestInt16ConditionalCmpConst(t *testing.T) {
  4131  	testCases := generateTestCases[int16]()
  4132  	base := int16(1 << 14)
  4133  	values := [3]int16{base - 1, base, base + 1}
  4134  
  4135  	for _, tc := range testCases {
  4136  		a, c := base, base
  4137  		for _, b := range values {
  4138  			for _, d := range values {
  4139  				expected := tc.combine(tc.cmp1(a, b), tc.cmp2(c, d))
  4140  				actual := tc.targetFunc(a, b, c, d)
  4141  				if actual != expected {
  4142  					t.Errorf("conditional comparison failed:\n"+
  4143  						"  type: %T\n"+
  4144  						"  condition: %s\n"+
  4145  						"  values: a=%v, b=%v, c=%v, d=%v\n"+
  4146  						"  cmp1(a,b)=%v (%s)\n"+
  4147  						"  cmp2(c,d)=%v (%s)\n"+
  4148  						"  expected: combine(%v, %v)=%v\n"+
  4149  						"  actual: %v\n"+
  4150  						"  logical expression: %s",
  4151  						a,
  4152  						tc.logicalExpr,
  4153  						a, b, c, d,
  4154  						tc.cmp1(a, b), tc.cmp1Expr,
  4155  						tc.cmp2(c, d), tc.cmp2Expr,
  4156  						tc.cmp1(a, b), tc.cmp2(c, d), expected,
  4157  						actual,
  4158  						tc.logicalExpr)
  4159  				}
  4160  			}
  4161  		}
  4162  	}
  4163  }
  4164  
  4165  func TestUint16ConditionalCmpConst(t *testing.T) {
  4166  	testCases := generateTestCases[uint16]()
  4167  	base := uint16(1 << 14)
  4168  	values := [3]uint16{base - 1, base, base + 1}
  4169  
  4170  	for _, tc := range testCases {
  4171  		a, c := base, base
  4172  		for _, b := range values {
  4173  			for _, d := range values {
  4174  				expected := tc.combine(tc.cmp1(a, b), tc.cmp2(c, d))
  4175  				actual := tc.targetFunc(a, b, c, d)
  4176  				if actual != expected {
  4177  					t.Errorf("conditional comparison failed:\n"+
  4178  						"  type: %T\n"+
  4179  						"  condition: %s\n"+
  4180  						"  values: a=%v, b=%v, c=%v, d=%v\n"+
  4181  						"  cmp1(a,b)=%v (%s)\n"+
  4182  						"  cmp2(c,d)=%v (%s)\n"+
  4183  						"  expected: combine(%v, %v)=%v\n"+
  4184  						"  actual: %v\n"+
  4185  						"  logical expression: %s",
  4186  						a,
  4187  						tc.logicalExpr,
  4188  						a, b, c, d,
  4189  						tc.cmp1(a, b), tc.cmp1Expr,
  4190  						tc.cmp2(c, d), tc.cmp2Expr,
  4191  						tc.cmp1(a, b), tc.cmp2(c, d), expected,
  4192  						actual,
  4193  						tc.logicalExpr)
  4194  				}
  4195  			}
  4196  		}
  4197  	}
  4198  }
  4199  
  4200  func TestInt32ConditionalCmpConst(t *testing.T) {
  4201  	testCases := generateTestCases[int32]()
  4202  	base := int32(1 << 30)
  4203  	values := [3]int32{base - 1, base, base + 1}
  4204  
  4205  	for _, tc := range testCases {
  4206  		a, c := base, base
  4207  		for _, b := range values {
  4208  			for _, d := range values {
  4209  				expected := tc.combine(tc.cmp1(a, b), tc.cmp2(c, d))
  4210  				actual := tc.targetFunc(a, b, c, d)
  4211  				if actual != expected {
  4212  					t.Errorf("conditional comparison failed:\n"+
  4213  						"  type: %T\n"+
  4214  						"  condition: %s\n"+
  4215  						"  values: a=%v, b=%v, c=%v, d=%v\n"+
  4216  						"  cmp1(a,b)=%v (%s)\n"+
  4217  						"  cmp2(c,d)=%v (%s)\n"+
  4218  						"  expected: combine(%v, %v)=%v\n"+
  4219  						"  actual: %v\n"+
  4220  						"  logical expression: %s",
  4221  						a,
  4222  						tc.logicalExpr,
  4223  						a, b, c, d,
  4224  						tc.cmp1(a, b), tc.cmp1Expr,
  4225  						tc.cmp2(c, d), tc.cmp2Expr,
  4226  						tc.cmp1(a, b), tc.cmp2(c, d), expected,
  4227  						actual,
  4228  						tc.logicalExpr)
  4229  				}
  4230  			}
  4231  		}
  4232  	}
  4233  }
  4234  
  4235  func TestUint32ConditionalCmpConst(t *testing.T) {
  4236  	testCases := generateTestCases[uint32]()
  4237  	base := uint32(1 << 30)
  4238  	values := [3]uint32{base - 1, base, base + 1}
  4239  
  4240  	for _, tc := range testCases {
  4241  		a, c := base, base
  4242  		for _, b := range values {
  4243  			for _, d := range values {
  4244  				expected := tc.combine(tc.cmp1(a, b), tc.cmp2(c, d))
  4245  				actual := tc.targetFunc(a, b, c, d)
  4246  				if actual != expected {
  4247  					t.Errorf("conditional comparison failed:\n"+
  4248  						"  type: %T\n"+
  4249  						"  condition: %s\n"+
  4250  						"  values: a=%v, b=%v, c=%v, d=%v\n"+
  4251  						"  cmp1(a,b)=%v (%s)\n"+
  4252  						"  cmp2(c,d)=%v (%s)\n"+
  4253  						"  expected: combine(%v, %v)=%v\n"+
  4254  						"  actual: %v\n"+
  4255  						"  logical expression: %s",
  4256  						a,
  4257  						tc.logicalExpr,
  4258  						a, b, c, d,
  4259  						tc.cmp1(a, b), tc.cmp1Expr,
  4260  						tc.cmp2(c, d), tc.cmp2Expr,
  4261  						tc.cmp1(a, b), tc.cmp2(c, d), expected,
  4262  						actual,
  4263  						tc.logicalExpr)
  4264  				}
  4265  			}
  4266  		}
  4267  	}
  4268  }
  4269  
  4270  func TestIntConditionalCmpConst(t *testing.T) {
  4271  	testCases := generateTestCases[int]()
  4272  	base := int(1 << 30)
  4273  	values := [3]int{base - 1, base, base + 1}
  4274  
  4275  	for _, tc := range testCases {
  4276  		a, c := base, base
  4277  		for _, b := range values {
  4278  			for _, d := range values {
  4279  				expected := tc.combine(tc.cmp1(a, b), tc.cmp2(c, d))
  4280  				actual := tc.targetFunc(a, b, c, d)
  4281  				if actual != expected {
  4282  					t.Errorf("conditional comparison failed:\n"+
  4283  						"  type: %T\n"+
  4284  						"  condition: %s\n"+
  4285  						"  values: a=%v, b=%v, c=%v, d=%v\n"+
  4286  						"  cmp1(a,b)=%v (%s)\n"+
  4287  						"  cmp2(c,d)=%v (%s)\n"+
  4288  						"  expected: combine(%v, %v)=%v\n"+
  4289  						"  actual: %v\n"+
  4290  						"  logical expression: %s",
  4291  						a,
  4292  						tc.logicalExpr,
  4293  						a, b, c, d,
  4294  						tc.cmp1(a, b), tc.cmp1Expr,
  4295  						tc.cmp2(c, d), tc.cmp2Expr,
  4296  						tc.cmp1(a, b), tc.cmp2(c, d), expected,
  4297  						actual,
  4298  						tc.logicalExpr)
  4299  				}
  4300  			}
  4301  		}
  4302  	}
  4303  }
  4304  
  4305  func TestUintConditionalCmpConst(t *testing.T) {
  4306  	testCases := generateTestCases[uint]()
  4307  	base := uint(1 << 30)
  4308  	values := [3]uint{base - 1, base, base + 1}
  4309  
  4310  	for _, tc := range testCases {
  4311  		a, c := base, base
  4312  		for _, b := range values {
  4313  			for _, d := range values {
  4314  				expected := tc.combine(tc.cmp1(a, b), tc.cmp2(c, d))
  4315  				actual := tc.targetFunc(a, b, c, d)
  4316  				if actual != expected {
  4317  					t.Errorf("conditional comparison failed:\n"+
  4318  						"  type: %T\n"+
  4319  						"  condition: %s\n"+
  4320  						"  values: a=%v, b=%v, c=%v, d=%v\n"+
  4321  						"  cmp1(a,b)=%v (%s)\n"+
  4322  						"  cmp2(c,d)=%v (%s)\n"+
  4323  						"  expected: combine(%v, %v)=%v\n"+
  4324  						"  actual: %v\n"+
  4325  						"  logical expression: %s",
  4326  						a,
  4327  						tc.logicalExpr,
  4328  						a, b, c, d,
  4329  						tc.cmp1(a, b), tc.cmp1Expr,
  4330  						tc.cmp2(c, d), tc.cmp2Expr,
  4331  						tc.cmp1(a, b), tc.cmp2(c, d), expected,
  4332  						actual,
  4333  						tc.logicalExpr)
  4334  				}
  4335  			}
  4336  		}
  4337  	}
  4338  }
  4339  
  4340  func TestInt64ConditionalCmpConst(t *testing.T) {
  4341  	testCases := generateTestCases[int64]()
  4342  	base := int64(1 << 62)
  4343  	values := [3]int64{base - 1, base, base + 1}
  4344  
  4345  	for _, tc := range testCases {
  4346  		a, c := base, base
  4347  		for _, b := range values {
  4348  			for _, d := range values {
  4349  				expected := tc.combine(tc.cmp1(a, b), tc.cmp2(c, d))
  4350  				actual := tc.targetFunc(a, b, c, d)
  4351  				if actual != expected {
  4352  					t.Errorf("conditional comparison failed:\n"+
  4353  						"  type: %T\n"+
  4354  						"  condition: %s\n"+
  4355  						"  values: a=%v, b=%v, c=%v, d=%v\n"+
  4356  						"  cmp1(a,b)=%v (%s)\n"+
  4357  						"  cmp2(c,d)=%v (%s)\n"+
  4358  						"  expected: combine(%v, %v)=%v\n"+
  4359  						"  actual: %v\n"+
  4360  						"  logical expression: %s",
  4361  						a,
  4362  						tc.logicalExpr,
  4363  						a, b, c, d,
  4364  						tc.cmp1(a, b), tc.cmp1Expr,
  4365  						tc.cmp2(c, d), tc.cmp2Expr,
  4366  						tc.cmp1(a, b), tc.cmp2(c, d), expected,
  4367  						actual,
  4368  						tc.logicalExpr)
  4369  				}
  4370  			}
  4371  		}
  4372  	}
  4373  }
  4374  
  4375  func TestUint64ConditionalCmpConst(t *testing.T) {
  4376  	testCases := generateTestCases[uint64]()
  4377  	base := uint64(1 << 62)
  4378  	values := [3]uint64{base - 1, base, base + 1}
  4379  
  4380  	for _, tc := range testCases {
  4381  		a, c := base, base
  4382  		for _, b := range values {
  4383  			for _, d := range values {
  4384  				expected := tc.combine(tc.cmp1(a, b), tc.cmp2(c, d))
  4385  				actual := tc.targetFunc(a, b, c, d)
  4386  				if actual != expected {
  4387  					t.Errorf("conditional comparison failed:\n"+
  4388  						"  type: %T\n"+
  4389  						"  condition: %s\n"+
  4390  						"  values: a=%v, b=%v, c=%v, d=%v\n"+
  4391  						"  cmp1(a,b)=%v (%s)\n"+
  4392  						"  cmp2(c,d)=%v (%s)\n"+
  4393  						"  expected: combine(%v, %v)=%v\n"+
  4394  						"  actual: %v\n"+
  4395  						"  logical expression: %s",
  4396  						a,
  4397  						tc.logicalExpr,
  4398  						a, b, c, d,
  4399  						tc.cmp1(a, b), tc.cmp1Expr,
  4400  						tc.cmp2(c, d), tc.cmp2Expr,
  4401  						tc.cmp1(a, b), tc.cmp2(c, d), expected,
  4402  						actual,
  4403  						tc.logicalExpr)
  4404  				}
  4405  			}
  4406  		}
  4407  	}
  4408  }
  4409  

View as plain text